Optimizasyon Rehberi

Bu kılavuzda, Google Haritalar API'leri kullanımınızı güvenlik, performans ve tüketim açısından optimize etmeye yönelik çeşitli stratejiler açıklanmaktadır.

Güvenlik

En iyi güvenlik uygulamalarını inceleme

API anahtarları, kullanıcı kimlikleri ve şifrelerle aynı önlemleri hak eden proje merkezli kimlik bilgileridir. Anahtarlarınızı, hesabınızda aşırı kota kullanımına ve beklenmedik ücretlere neden olabilecek istenmeyen kullanıma karşı korumak için API Güvenliği En İyi Uygulamaları'nı inceleyin.

Haritalar API'lerine erişmek için API anahtarlarını kullanma

API anahtarları, Google Maps API API'lerine erişim için tercih edilen kimlik doğrulama yöntemidir. İstemci kimliklerinin kullanımı şu anda hâlâ desteklense de API anahtarları daha ayrıntılı güvenlik kontrollerini destekler ve belirli web adresleri, IP adresleri ve mobil SDK'lar (Android ve iOS) ile çalışacak şekilde ayarlanabilir. API anahtarı oluşturma ve güvenliğini sağlama hakkında bilgi için her API veya SDK'nın "API Anahtarı Kullanma" sayfasına gidin. (Örneğin, Maps JavaScript API için API Anahtarı Kullanma konusundaki sayfasını ziyaret edin.)

Performans

Hataları işlemek için eksponansiyel geri yükleme kullanma

Uygulamalarınız kısa süre içinde çok fazla API çağırma girişiminde bulunduğu için hatalarla karşılaşıyorsa (QPS hataları gibi) isteklerin işlenmesine izin vermek için üstel geri yükleme özelliğini kullanabilirsiniz.

Üstel geri yükleme, en çok 500'lerdeki hatalar için yararlıdır. Daha fazla bilgi için HTTP döndürme durumu kodlarını işleme bölümüne bakın.

Özellikle sorgularınızın hızını ayarlayın. Kodunuzda, sorgular arasına S saniyelik bekleme süresi ekleyin. Sorgu hâlâ QPS hatasıyla sonuçlanıyorsa bekleme süresini iki katına çıkarıp başka bir sorgu gönderin. Sorgu hata olmadan geri dönene kadar bekleme süresini ayarlamaya devam edin.

İsteğe bağlı olarak kullanıcı etkileşimi istekleri gönderme

Kullanıcı etkileşimi içeren API istekleri yalnızca talep üzerine gönderilmelidir. Bu, API isteğini başlatmak için son kullanıcının on-click gibi bir işlem gerçekleştirmesini beklemek, ardından sonuçları harita yüklemek, hedef belirlemek veya uygun bilgileri görüntülemek için kullanmak anlamına gelir. İsteğe bağlı bir yaklaşım kullanılması, API'lere gereksiz isteklerden kaçınarak API tüketimini azaltır.

Harita hareket ederken yer paylaşımlı içeriğin görüntülenmesinden kaçınma

Bir kullanıcı haritayı hareket ettiriyor olabileceği sırada haritada özel yer paylaşımlı içerik görüntülemek için Draw() özelliğini kullanmaktan kaçının. Bir kullanıcı haritayı her hareket ettirdiğinde harita yeniden çizildiğinden, haritaya aynı anda yer paylaşımlı içeriğin yerleştirilmesi, gecikme veya görsel kesintilere yol açabilir. Yalnızca kullanıcı kaydırmayı veya yakınlaştırmayı durdurduğunda haritadaki yer paylaşımlı içeriği ekleyin veya kaldırın.

Draw yöntemlerinde yoğun işlemlerden kaçınılıyor

Genel bir kural olarak, Draw() yönteminde performans odaklı çizim olmayan işlemlerden kaçınmak iyi bir uygulamadır. Örneğin, Draw() yöntem kodunuzda aşağıdakilerden kaçının:

  • Büyük miktarda içerik döndüren sorgular.
  • Gösterilen verilerde birçok değişiklik yapılır.
  • Çok sayıda Belge Nesne Modeli (DOM) öğesini değiştirme.

Bu işlemler performansı yavaşlatabilir ve harita oluşturulurken gecikme veya görsel kesintilere yol açabilir.

İşaretçiler için kafes görüntüler kullanma

Haritada bir konumu tanımlamak için işaretçiler eklerken, .PNG veya .JPG biçimindeki görüntüler gibi kafes resimler kullanın. SVG resimleri oluşturulması, harita yeniden çizildiğinde gecikmeye neden olabileceğinden Ölçeklenebilir Vektörel Grafik (SVG) resimleri kullanmaktan kaçının.

İşaretleri optimize etme

Optimizasyon, çok sayıda işaretçiyi tek bir statik öğe olarak oluşturarak performansı artırır. Bu, çok sayıda işaretçinin gerekli olduğu durumlarda yararlıdır. Varsayılan olarak, bir işaretçinin optimize edilip edilmeyeceğini Maps JavaScript API belirler. Çok sayıda işaretçi olduğunda, Maps JavaScript API, işaretçileri optimizasyonla oluşturmaya çalışır. Tüm işaretçiler optimize edilemez. Bazı durumlarda Maps JavaScript API'nin işaretçileri optimizasyon olmadan oluşturması gerekebilir. Animasyonlu GIF'ler veya PNG'ler için ya da her bir işaretçinin ayrı bir DOM öğesi olarak oluşturulması gerektiğinde optimize edilmiş oluşturmayı devre dışı bırakın.

İşaretçi görüntüsünü yönetmek için kümeler oluşturma

Haritadaki konumları tanımlamak amacıyla işaretçilerin gösterilmesini yönetmek için İşaretçi Kümesi kitaplığını kullanarak bir işaretçi kümesi oluşturun. İşaretçi Kümesi kitaplığı aşağıdaki seçenekleri içerir:

  • Bir kümede birlikte gruplandırılacak işaretçi sayısını belirtmek için ızgara boyutu.
  • Kümenin gösterileceği maksimum yakınlaştırma seviyesini belirtmek için maksimum yakınlaştırma seviyesi.
  • İşaretçi simgeleri olarak kullanılacak grafik resimleri için görüntü yolları.

İzleme

Bütçenizi planlamak ve maliyetlerinizi kontrol etmek için aşağıdakileri yapın:

  • Maliyetlerinizin belirli bir tutara doğru nasıl arttığını izlemek için bütçe uyarısı ayarlayın. Bütçe ayarlamak API kullanımını sınırlamaz. Yalnızca maliyetleriniz belirttiğiniz tutara yaklaştığında sizi uyarır.
  • Faturalandırılabilir API'lerle ilgili maliyetlerinizi yönetmek için günlük API kullanımınızı sınırlandırın. Günlük istek sayısını sınırlayarak maliyetlerinizi sınırlayabilirsiniz. Ne kadar harcama yapmak istediğinize bağlı olarak günlük sınırınızı belirlemek için basit bir denklem kullanın: (aylık maliyet/her biri başına fiyat)/30 = günlük istek sınırı (bir API için). Özel uygulamanızda birden fazla faturalandırılabilir API kullanılabilir. Bu nedenle, denklemi gerektiği gibi ayarlayın. Her ay 200 ABD doları değerinde Google Haritalar API'si kredisi kullanabileceğiniz için bunu hesaplamalarınızda hesaba katın.
  • Kullanımınızı ayrı tutmak, önceliklendirmek ve takip etmek için birden fazla proje kullanın. Örneğin, testlerinizde Google Haritalar Platformu API'lerini düzenli olarak kullandığınızı varsayalım. Testiniz için kendi kotaları ve API anahtarlarıyla ayrı bir proje oluşturarak sürpriz harcamalara karşı koruma sağlarken kapsamlı bir test yapabilirsiniz.

Haritalar'da tüketimi yönetme

Kullanıcılar genellikle aynı anda yalnızca bir haritayla etkileşimde bulunduğundan, sayfa başına tek bir harita kullanmak harita görünümünü optimize etmek için iyi bir yöntemdir. Uygulamanız, müşteri etkileşimine ve ihtiyaçlarına bağlı olarak farklı veri kümelerini göstermek için haritayı manipüle edebilir.

Statik resimler kullanma

Dinamik görüntüler (Dinamik Haritalar ve Dinamik Street View) kullanan isteklerin maliyeti Statik Haritalar ve Statik Street View'dan daha fazladır. Harita veya Street View ile kullanıcı etkileşimini (yakınlaştırma ya da kaydırma) öngörmüyorsanız bu API'lerin statik sürümlerini kullanın.

Küçük resimler (çok küçük haritalar ve fotoğraflar), Statik Haritalar ve Statik Street View için kullanışlı bir başka kullanışlı araçtır. Bu öğeler, daha düşük bir ücretle ve kullanıcı etkileşimiyle (tıklamada) faturalandırılır ve kullanıcıları eksiksiz bir Google Haritalar deneyimi için dinamik bir sürüme yönlendirebilir.

Maps Embed API'yi kullanma

Ücretsiz olarak tek bir işaretçi içeren harita veya dinamik harita eklemek için Maps Embed API'yi kullanabilirsiniz. Tek bir işaretçiyle harita özelleştirmenin gerekli olmadığı uygulamalar için Maps Embed API'yi kullanın. Yol Tarifi modunu, Görüntüleme modunu veya Arama modunu kullanan Maps Embed API istekleri faturalandırılır (ayrıntılar için fiyatlandırma tablosuna bakın).

Mobil uygulamalar için mobil harita SDK'larını kullanma

Mobil uygulamalarda, harita görüntülerken Android için Haritalar SDK'sını veya iOS için Haritalar SDK'sını kullanın. Gereklilikler mobil SDK'ları kullanmadığında Maps Static API veya Maps JavaScript API'yi kullanın.

Rotalarda tüketimi yönetme

Directions API ara noktalarını sınırlama

Mümkün olduğunda, bir sorgudaki kullanıcı girişlerini en fazla 10 ara noktayla sınırlandırın. 10'dan fazla ara nokta içeren istekler daha yüksek bir ücretle faturalandırılır.

En iyi yönlendirme için Directions API optimizasyonunu kullanma

Referans noktası optimizasyonu bağımsız değişkenini kullanan istekler daha yüksek ücretle faturalandırılır. Daha fazla bilgi için Referans Noktalarını Optimize Etme konusuna bakın.

Optimizasyon bağımsız değişkeni, en iyi rotayı sağlamak için ara noktaları sıralar. Diğer bir deyişle, A'dan E'ye seyahatin, optimize edilmemiş bir rotanın rastgele sırasına (A-D-B-C-E gibi) kıyasla daha iyi bir deneyim sunması (A-B-C-D-E) anlamına gelir.

Directions API ve DISTANCE Matris API'de gerçek zamanlı trafik modellerini kullanma

Gerçek zamanlı trafik modelleri içeren Directions API ve DISTANCE Matrix API istekleri daha yüksek bir ücretle faturalandırılır. Gerçek zamanlı trafik modelleri, kalkış saati now olarak ayarlanarak etkinleştirilir.

Trafik modelleri bir istekten çıkarılırsa sonuçlar yalnızca fiziksel faktörlere (yollar, mesafe ve hız sınırları) dayanır.

GPS verileri tam olmadığında Gidilen Rota ve En Yakın Yol kullanılıyor

Maps Roads API özellikleri, Gidilen Rota ve En Yakın Yol gelişmiş katmanda yer almaktadır ve daha yüksek bir ücretle faturalandırılır. GPS verilerinin tam olmadığı ve Roads API'nin doğru yolu belirlemeye yardımcı olabileceği durumlarda bu özellikleri kullanın. Roads API'nin başka bir özelliği olan Hız Sınırları, yalnızca Öğe İzleme müşterileri tarafından kullanılabilir.

5-15 dakikalık aralıklarla örnekleme hızı sınırı konumları

Maps Roads API Hız Sınırı hizmetine yapılan çağrıların hacmini en aza indirmek için öğelerinizin konumlarını 5-15 dakikalık aralıklarla örnekleyin. Kesin değer, öğenin seyahat hızına bağlıdır. Bir öğe sabitse tek bir konum örneği yeterlidir. Birden fazla arama yapmanız gerekmez.

Genel gecikmeyi en aza indirmek için, bir mobil öğenin konumu her alındığında API'yi çağırmak yerine bir miktar veri topladıktan sonra Hız Sınırı hizmetini çağırın.

Yerler'de tüketimi yönetme

Otomatik Yer Tamamlama uygulamalarını optimize etme

Otomatik Yer Tamamlama özelliğini kullanmanın maliyetini optimize etmek için:

  • JavaScript, Android ve iOS Otomatik Tamamlama widget'larında yalnızca ihtiyaç duyduğunuz Yer Verileri Alanlarını döndürmek için alan maskelerini kullanın.

  • belirli faturalandırma seçenekleri kullanım alanınıza bağlıdır. Uygulamanızda Otomatik Tamamlama oturumlarını kullanıp kullanmadığına bağlı olarak, Otomatik Tamamlama - İstek Başına veya Otomatik Tamamlama - Oturum Başına SKU'ları üzerinden ücretlendirilirsiniz.

Kullanım alanınıza uygun seçeneği belirleme konusunda daha fazla bilgi ve yardım için Otomatik tamamlama maliyet optimizasyonuyla ilgili en iyi uygulamalar başlıklı makaleyi inceleyin.

Yer Ayrıntıları ve Yer Arama isteklerindeki belirli alanlar için veri döndürme

Yer Ayrıntıları ve Yer Arama isteklerini, uygulamanızda kullanılan belirli alanlara ilişkin verileri döndürecek şekilde özelleştirebilirsiniz. Bu alanlar kategorilere ayrılır: Temel, İletişim ve Atmosfer. Herhangi bir alan belirtmeyen istekler tüm alanlar için veri alır.

Yer Ayrıntısı isteklerinin faturalandırması, istenen verinin türlerine ve miktarlarına bağlıdır. Herhangi bir alan belirtmeyen istekler tam ücret üzerinden faturalandırılır. Daha fazla bilgi için Yer Ayrıntıları ve Yer Arama konularına bakın.

Geocoding API'yi kullanarak maliyetleri azaltma

Uygulamanız kullanıcı tarafından yazılan adresleri işliyorsa adresler bazen belirsiz olabilir (eksik, yanlış yazılmış veya kötü biçimlendirilmiş). Otomatik Tamamlama'yı kullanarak adresleri netleştirin, ardından yerlerin konumlarını almak için yer kimliklerini kullanın.

Ancak tam adresiniz (veya bu adrese yakın) varsa Otomatik Tamamlama yerine Coğrafi Kodlama özelliğini kullanarak maliyetleri azaltabilirsiniz. Daha ayrıntılı bilgi için Adreslerin Coğrafi Kodlamasıyla İlgili En İyi Uygulamalar bölümüne bakın.

Google Haritalar Platformu kotaları nasıl çalışır?

Tüm API'lerimizde, her müşterinin yapabileceği arama sayısı sınırlıdır. Bu kotalar, dakika başına yapılandırılır. Bir dakika içinde belirli bir API'deki çağrı kotasına ulaştığınızda, bundan sonraki çağrılar bir sonraki dakikaya kadar kabul edilmez.

Yalnızca sunucu hatalarına neden olan başarılı istekler ve istekler kotaya dahil edilir. Kimlik doğrulamada başarısız olan istekler kotaya dahil edilmez.

Bazı Maps API'lerinde dakika başına kotanın yanı sıra saniye başına yaptırım da uygulanmaktadır. Saniye başına bu yaptırım, tüm dakika boyunca tek tip kullanımı garanti etmez veya o dakika boyunca kullanım kotanıza ulaşmanızı engellemez. Herhangi bir dakikanın ilk birkaç saniyesinde kotanızın tamamını kullanmanızı önler ve ani kullanım artışları durumunda hizmet kesintilerine karşı sizi korur. Bu yaptırım farklılıklarıyla başa çıkmak için QPS genelindeki QPM kullanımınızın ortalamasını alarak kota kullanımınızı ve gereksinimlerinizi planlayın.

Saniye başına bu zorunlu kılmaya sahip olan GMP API'leri; Directions API, Length Matrix API, Elevation API, Geocoding API, Places API ve Roads API'dir.

Toplam istek hacminize göre tüm GMP API ürünlerinin maliyetini hesaplayın.