Bu rehberde, Google Haritalar API'lerinin kullanımını güvenlik, performans ve tüketim açısından optimize etmek için çeşitli stratejiler açıklanmaktadır.
Güvenlik
Güvenlikle ilgili en iyi uygulamaları inceleme
API anahtarları, kullanıcı kimlikleri ve şifrelerle aynı önlemleri almayı hak eden, proje merkezli kimlik bilgileridir. Anahtarlarınızı istenmeyen kota kullanımlarına karşı korumak için API Güvenliği En İyi Uygulamaları'nı inceleyin. Bu, hesabınıza aşırı kota kullanımı uygulanmasına ve hesabınızdan beklenmedik ücretler alınmasına neden olabilir.
Maps API'lere erişmek için API anahtarlarını kullanma
API anahtarları, Google Haritalar API'leri API'lerine erişmek için tercih edilen kimlik doğrulama yöntemidir. İstemci kimlikleri 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'larla (Android ve iOS) çalışacak şekilde ayarlanabilir. API anahtarı oluşturma ve güvenli hale getirme hakkında bilgi edinmek için her API veya SDK'nın "API Anahtarı Kullanma" sayfasına gidin. (Örneğin, Maps JavaScript API için API Anahtarı Kullanma sayfasını ziyaret edin.)
Performans
Hataları yönetmek için üstel geri çekilme kullanma
Uygulamalarınız, QPS hataları gibi kısa bir süre içinde bir API'yi çağırmaya yönelik aşırı denemelerle ilgili hatalarla karşılaşırsa isteklerin işlemesine izin vermek için üstel geri çekilme kullanabilirsiniz.
Üstel geri çekilme en çok 500'lerdeki hatalarda yararlıdır. Daha fazla bilgi için HTTP iade durum 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 bir 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 dönene kadar bekleme süresini ayarlamaya devam edin.
İsteğe bağlı olarak kullanıcı etkileşimi istekleri gönderme
Kullanıcı etkileşimini içeren API'lere yapılan istekler yalnızca talep üzerine gönderilmelidir.
Bu, son kullanıcının API isteğini başlatmak için bir işlem (on-click
gibi) gerçekleştirmesini bekleyip sonuçları yüklemek, hedef belirlemek veya uygun bilgileri görüntülemek için sonuçları kullanması anlamına gelir. İsteğe bağlı yaklaşım, API'lere yönelik gereksiz isteklerden kaçınarak API tüketimini azaltır.
Harita hareket halindeyken yer paylaşımlı içerik göstermekten kaçınma
Bir kullanıcının haritayı hareket ettirdiği sırada harita üzerinde özel yer paylaşımı içeriği görüntülemek için Draw()
özelliğini kullanmaktan kaçının. Bir harita her hareket ettiğinde harita yeniden çizildiğinden, aynı anda haritaya yer paylaşımlı içerik yerleştirmek, gecikmeyi veya kesintili görüntüye neden olabilir. Yalnızca kullanıcı kaydırmayı veya yakınlaştırmayı durdurduktan sonra haritadaki yer paylaşımlı içeriği ekleyin veya kaldırın.
Draw
yöntemlerinde yoğun işlemlerden kaçınma
Genel bir kural olarak, Draw()
yönteminde yoğun trafik almayan işlemlerden kaçınmanız önerilir. Ö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 yapılacak birçok değişiklik.
- Çok sayıda Doküman Nesne Modeli (DOM) öğesini değiştirme.
Bu işlemler performansı yavaşlatabilir ve harita görüntülendiğinde gecikme veya görsel takılmaya neden olabilir.
İşaretçiler için raster resimler kullanma
Haritadaki bir konumu tanımlamak için işaretçiler eklerken raster görüntüler (.PNG veya .JPG biçimindeki resimler gibi) kullanın. SVG resimlerinin oluşturulması, harita yeniden çizildiğinde gecikmeye neden olabileceği için Ölçeklenebilir Vektör Grafiği (SVG) resimleri kullanmaktan kaçının.
İşaretçileri optimize etme
Optimizasyon, birçok işaretçiyi tek bir statik öğe olarak oluşturarak performansı artırır. Bu seçenek, çok sayıda işaretçinin gerekli olduğu durumlarda yararlıdır. İşaretçinin optimize edilip edilmeyeceğine varsayılan olarak Maps JavaScript API karar verir. Çok sayıda işaretçi olduğunda Haritalar JavaScript API'si, işaretçileri optimizasyonla oluşturmaya çalışır. İşaretçilerin tümü optimize edilemez. Bazı durumlarda Haritalar JavaScript API'sinin, işaretçileri optimizasyon olmadan oluşturması gerekebilir. Animasyonlu GIF'ler veya PNG'ler için ya da her işaretçinin ayrı bir DOM öğesi olarak oluşturulması gerektiğinde optimize oluşturmayı devre dışı bırakın.
İşaretçi görüntüsünü yönetmek için kümeler oluşturma
Bir haritadaki konumları tanımlamak amacıyla işaretçilerin görünümünü yönetmeye yardımcı olması için Marker Clusterer kitaplığını kullanarak bir işaretçi kümesi oluşturun. İşaretçi Kümeleyici kitaplığı şu seçenekleri içerir:
- Bir kümede gruplandırılacak işaretçi sayısını belirtmek için ızgara boyutu.
- Kümenin görüntüleneceği maksimum yakınlaştırma düzeyini belirtmek için maksimum yakınlaştırma.
- Grafik resimlerinin işaretçi simgesi olarak kullanılması için resim yolları.
Tüketim
Bütçenizi planlamak ve maliyetlerinizi kontrol etmek için aşağıdakileri yapın:
- Maliyetlerinizin belirli bir tutara yaklaşmasını izlemek için bütçe uyarısı belirleyin. Bütçe belirlemek API kullanımını sınırlamaz. Yalnızca maliyetleriniz belirttiğiniz tutara yaklaştığında sizi uyarır.
- Faturalandırılabilir API'lerin maliyetlerini yönetmek için günlük API kullanımınızı sınırlayın. Günlük istek sayısı için sınırlar belirleyerek 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 için fiyat)/30 = günlük istek sayısı (bir API için). Özel uygulamanız birden fazla faturalandırılabilir API kullanabilir, bu nedenle denklemi gerektiği gibi ayarlayın. Her ay 200 ABD doları değerinde Google Haritalar API'si kredisi sunuyoruz. Bu nedenle, hesaplamalarınızda bu tutarı hesaba katın.
- Kullanımınızı ayırmak, önceliklendirmek ve izlemek için birden fazla proje kullanın. Örneğin, testlerinizde Google Haritalar Platformu API'lerini düzenli olarak kullandığınızı varsayalım. Testleriniz için kendi kotaları ve API anahtarları olan ayrı bir proje oluşturarak aşırı harcamalarla karşılaşmamak için tam anlamıyla test edebilirsiniz.
Haritalar'da tüketimi yönetme
Kullanıcılar genellikle aynı anda yalnızca bir haritayla etkileşimde bulundukları için, sayfa başına tek bir harita kullanmak harita görünümünü optimize etmenin iyi bir yoludur. Uygulamanız, müşteri etkileşimine ve ihtiyaçlarına bağlı olarak farklı veri kümeleri görüntülemek için haritayı değiştirebilir.
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 yüksektir. Harita veya Street View (yakınlaştırma veya kaydırma) ile kullanıcı etkileşimini tahmin etmiyorsanı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 iyi bir başka kullanım alanıdır. Bu öğeler daha düşük ücretle ve kullanıcı etkileşimiyle (tıklandığında) faturalandırılır ve tam bir Google Haritalar deneyimi için kullanıcıları dinamik bir sürüme yönlendirebilir.
Maps embed API'yi kullanma
Tek bir işaretçi içeren bir harita veya ücretsiz olarak dinamik bir harita eklemek için Maps Yerleştirme API'sini kullanabilirsiniz. Tek bir işaretçi gerektiren ve harita özelleştirmesi gerektirmeyen uygulamalar için Maps Yerleştirme API'sini kullanın. Yol Tarifi, Görüntüleme modu veya Arama modunu kullanan Haritalar Yerleştirme API'si istekleri faturalandırılır (ayrıntılar için fiyatlandırma tablosuna bakın).
Mobil uygulamalar için mobil haritalar SDK'larını kullanma
Mobil uygulamalarda bir harita gösterirken Android için Haritalar SDK'sını veya iOS için Haritalar SDK'sını kullanın. Mobil SDK'ları kullanarak gereksinimler geçersiz kılındığında Maps Static API'yi veya Maps JavaScript API'yi kullanın.
Rotalarda tüketimi yönetme
Yol Tarifi API'si 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.
Optimum yönlendirme için Directions API optimizasyonunu kullanma
Ara nokta optimizasyon 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 bölümüne bakın.
Optimizasyon bağımsız değişkeni, en iyi yönlendirmeyi sağlamak için ara noktaları sıralar. Yani A'dan E'ye geçiş, optimize edildiğinde (A-B-C-D-E) optimize edilmemiş bir rotanın rastgele kombinasyonu yerine (A-D-B-C-E gibi) daha iyi bir deneyimdir.
Directions API ve Mesafe Matrisi API'sinde gerçek zamanlı trafik modellerini kullanma
Gerçek zamanlı trafik modelleri içeren Directions API ve Mesafe Matrisi API istekleri daha yüksek bir fiyatla faturalandırılır.
Gerçek zamanlı trafik modelleri, kalkış saati now
olarak ayarlanarak etkinleştirilir.
Trafik modelleri istekten çıkarılırsa sonuçlar yalnızca yol, mesafe ve hız sınırları gibi fiziksel faktörleri temel alır.
GPS verileri yetersiz olduğunda Rota Gidilen Rota ve En Yakın Yolu kullanma
Maps Roads API özellikleri olan Rota Gidilen Yer ve En Yakın Yol, gelişmiş katmana dahil olup daha yüksek bir ücretle faturalandırılır. GPS verilerinin kesin olmadığı ve Roads API'nin doğru yolu belirlemeye yardımcı olabileceği durumlarda bu özellikleri kullanın. Roads API'nin bir başka özelliği olan Hız Sınırları da 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 aramaların hacmini en aza indirmek için öğelerinizin konumlarını 5-15 dakikalık aralıklarla izleyin. Kesin değer, bir öğenin seyahat etme hızına bağlıdır. Bir öğe sabitse tek bir konum örneği yeterlidir. Birden fazla arama yapmanız gerekmez.
Toplam gecikmeyi en aza indirmek için mobil öğenin konumu her alındığında API'yi çağırmak yerine, bazı verileri topladıktan sonra Hız Sınırı hizmetini çağırın.
Yerler'de tüketimi yönetme
Yer Otomatik 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 alan maskelerini kullanarak yalnızca ihtiyaç duyduğunuz yer veri alanlarını döndürün.
Faturalandırma seçeneklerini belirlemek kullanım durumunuza bağlıdır. Uygulamanızın Otomatik oturum tamamlama kullanıp kullanmadığına bağlı olarak sizden Otomatik Tamamlama - İstek Başına veya Otomatik Tamamlama - Oturum Başına SKU'ları için ücret alınır.
Kullanım alanınıza yönelik doğru seçeneği belirlemeyle ilgili daha fazla bilgi ve rehberlik 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
Uygulamanızda kullanılan belirli alanlar için veri döndürmek amacıyla Yer Ayrıntıları ve Yer Arama isteklerini özelleştirebilirsiniz. Bu alanlar Temel, İletişim ve Atmosfer olmak üzere kategorilere ayrılır. Herhangi bir alan belirtilmeyen istekler, tüm alanlar için veri alır.
Yer Ayrıntıları istekleri için faturalandırma, istenen veri türlerine ve miktarına bağlıdır. Herhangi bir alan belirtilmeyen 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 belirsizdir (eksik, yanlış yazılmış veya kötü biçimlendirilmiş). Otomatik tamamlama özelliğini kullanarak adreslerin belirsizliğini giderin, ardından yer konumlarını almak için yer kimliklerini kullanın.
Bununla birlikte, tam bir adresiniz varsa (veya bu adrese yakınsanız) Otomatik Tamamlama yerine Coğrafi Kodlama'yı kullanarak maliyetleri azaltabilirsiniz. Daha fazla bilgi için Coğrafi Kodlama İçin En İyi Uygulamalar bölümüne bakın.
Google Haritalar Platformu kotalarının işleyiş şekli
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'de çağrı kotasına ulaştığınızda, sonraki çağrılar bir sonraki dakikaya kadar kabul edilmez.
Yalnızca başarılı istekler ve sunucu hatalarına neden olan istekler kotaya dahil edilir. Kimlik doğrulamada başarısız olan istekler kotaya dahil edilmez.
Dakika başına kota uygulamasına ek olarak çeşitli Haritalar API'leri saniye başına yaptırıma tabidir. Saniye başına zorunlu kılma, bir dakika boyunca tek tip kullanım garantisi vermez ve söz konusu dakika için kullanım kotanızı aşmanızı engellemez. Herhangi bir dakikanın ilk veya iki saniyesinde kotanızın tamamını tüketmenizi önler ve ani kullanım sıçramaları durumunda sizi hizmet kesintilerine karşı korur. Bu yaptırım farklılıklarıyla baş etmek için QPS genelinde QPM ortalamanızı ortalama alarak kota kullanımınızı ve gereksinimlerinizi planlayın.
Saniye başına bu zorunlu kılmanın uygulandığı GMP API'leri şunlardır: Directions API, Mesafe Matrisi API, Elevation API, Geocoding API, Places API ve Roads API.
Toplam istek hacminize göre herhangi bir GMP API ürünü için maliyetlerinizi tahmin edin.