Bu kılavuzda, Google Haritalar API'lerinin kullanımını güvenlik, performans ve tüketim açısından optimize etmeye yönelik ç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 kullanımdan korumak için API Güvenliği En İyi Uygulamaları'nı inceleyin. Bu yöntem, hesabınızda gereksiz kota kullanımına ve beklenmedik ödemelere yol açabilir.
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 kimliklerini kullanma ş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 bir API veya SDK'nın "API Anahtarı Kullanma" sayfasına gidin. (Örneğin, Maps JavaScript API için API Anahtarı Kullanma ile ilgili sayfayı ziyaret edin.)
Performans
Hataları işlemek için eksponansiyel geri yükleme özelliğini kullanma
Uygulamalarınız, QPS hataları gibi kısa bir süre içinde bir API'yi çağırmaya yönelik aşırı deneme sırasında hatalarla karşılaşıyorsa isteklerin işlenmesine izin vermek için üstel geri yükleme özelliğini kullanabilirsiniz.
Eksponansiyel geri yükleme, en çok 500'lerdeki hatalar için 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. Kodunuza sorgular arasına
S saniyelik bir bekleme süresi ekleyin. Sorgu, QPS hatasıyla sonuçlanmaya devam ediyorsa bekleme süresini iki katına çıkarıp başka bir sorgu gönderin. Sorgu bir hata olmadan geri dönene kadar bekleme süresini ayarlamaya devam edin.
İsteğe bağlı kullanıcı etkileşimi istekleri gönderme
Kullanıcı etkileşimini içeren API'lere yapılan istekler yalnızca istek ü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 beklemenin ardından bir harita yüklemek, bir hedef belirlemek veya uygun bilgileri görüntülemek için sonuçları kullanma anlamına gelir. İsteğe bağlı bir yaklaşım kullanmak, API'lere gereksiz istekler gönderilmesini önleyerek API tüketimini azaltır.
Bir harita hareket ederken yer paylaşımı içeriği görüntülemekten kaçınma
Bir kullanıcının haritayı taşıdığı sırada özel yer paylaşımı içeriğini bir haritada görüntülemek için
Draw() özelliğini kullanmaktan kaçının. Bir kullanıcı haritayı her hareket ettiğinde harita yeniden çizildiğinden, aynı anda haritaya bindirme içeriği yerleştirmek, gecikmeyi veya kesintili görüntüye neden olabilir. Yalnızca kullanıcı kaydırmayı veya yakınlaştırmayı durdurduktan sonra bir haritadaki yer paylaşımı içeriğini ekleyin veya kaldırın.
Draw yöntemde yoğun işlemlerden kaçınma
Genel bir kural olarak,
Draw() yöntemiyle yoğun şekilde çizim yapmayan işlemlerden kaçınmak iyi bir uygulamadır. Örneğin,
Draw() yöntem kodunuzda aşağıdakileri kullanmaktan kaçının:
- Büyük miktarda içerik döndüren sorgular.
- Gösterilen verilerde yapılan birçok değişikliktir.
- Çok sayıda Belge Nesne Modeli (DOM) öğesinin değiştirilmesi.
Bu işlemler, performansı yavaşlatabilir ve harita oluşturulurken gecikme veya görsel takılmaya yol açabilir.
İşaretçiler için raster resimleri kullanma
Haritadaki bir konumu tanımlamak için işaretçiler eklerken raster resimler (.PNG veya .JPG biçimindeki resimler gibi) kullanın. SVG resimlerinin oluşturulması, harita yeniden çizildiğinde gecikme yaşanmasına neden olabileceğinden Ölçeklenebilir Vektör Grafiği (SVG) resimleri kullanmaktan kaçının.
İşaretçileri optimize etme
Optimizasyon, tek bir statik öğe olarak çok sayıda işaretçi oluşturarak performansı iyileştirir. Bu seçenek, çok sayıda işaretçinin gerekli olduğu durumlarda yararlıdır. Varsayılan olarak, bir JavaScript'in optimize edilip edilmeyeceğini Maps JavaScript API belirler. Çok sayıda işaretçi olduğunda Haritalar JavaScript API'si, optimizasyon içeren işaretçiler oluşturmaya çalışır. İşaretçilerin hepsi optimize edilemez. Bazı durumlarda, Maps JavaScript API'nin optimizasyon olmadan İşaretçiler oluşturması gerekebilir. Animasyonlu GIF veya PNG'ler için veya her işaretçinin ayrı bir DOM öğesi olarak oluşturulması gerektiğinde optimize edilmiş oluşturmayı devre dışı bırakın.
İşaretçi ekranını yönetmek için küme oluşturma
Bir haritadaki konumları tanımlamak üzere işaretçilerin görünümünü yönetmeye yardımcı olması için İşaretçi Kümeleyicisi kitaplığını kullanarak bir işaretçi kümesi oluşturun. İşaretleyici Kümeleyici kitaplığı için şu seçenekler bulunur:
- 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 resimleri için işaretçi simgeleri olarak kullanılacak resim yolları.
Tüketim
Bütçenizi planlamak ve maliyetlerinizi kontrol etmek için aşağıdakileri yapın:
- Maliyetlerinizin belirli bir tutara göre nasıl arttığını izlemek için bir bütçe uyarısı oluşturun. 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ırlandırın. Günlük istek sayısı için sınırlar belirleyerek maliyetlerinizi sınırlandırabilirsiniz. Ne kadar harcamak 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ızda birden fazla faturalandırılabilir API kullanılabilir. Bu nedenle, denklemi gereken şekilde ayarlayın. Her ay 200 ABD doları değerinde Google Haritalar API'si kredisi kullanabileceğiniz için bu değeri hesaplamalarınıza dahil edin.
- 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 kota ve API anahtarlarınızla ayrı bir proje oluşturarak aşırı harcamaya karşı koruma sağlarken kapsamlı bir şekilde test edebilirsiniz.
Haritalar'da tüketimi yönetme
Kullanıcılar genellikle tek seferde yalnızca bir haritayla etkileşimde bulunduğu için, sayfa başına tek bir harita kullanmak haritalar 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) kullanarak kullanıcı etkileşimi olmasını beklemiyorsanız bu API'lerin statik sürümlerini kullanın.
Küçük resimler ve çok küçük haritalar ve fotoğraflar, Statik Haritalar ve Statik Street View için iyi bir 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 Yerleştirme API'sını Kullanma
Tek bir işaretçi veya dinamik bir harita içeren bir haritayı ücretsiz olarak eklemek için Maps Yerleştirme API'sini kullanabilirsiniz. Tek bir işaretçinin gerektiren ve harita özelleştirmenin gerekli olmadığı uygulamalar için Maps Yerleştirme API'sini kullanın. Yol Tarifi, Görünüm modu veya Arama modunu kullanan Haritalar Yerleştirme API'leri 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 harita gösterirken Android için Haritalar SDK'sını veya iOS için Haritalar SDK'sını kullanın. Mobil SDK'ları kullanarak şartlar devre dışı bırakıldığında Maps Static API'yi veya Maps JavaScript API'yi kullanın.
Rotalarda tüketimi yönetme
Directions API referans 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 ücretle faturalandırılır.
En iyi 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 edinmek için Referans noktalarını optimize etme başlıklı makaleyi inceleyin.
Optimizasyon bağımsız değişkeni, en iyi yönlendirmeyi sağlamak için referans noktalarını sıralar. Yani, optimize edilmiş A'dan E'ye seyahat, optimize edilmemiş bir rotanın (A-D-B-C-E gibi) rastgele sıralamasına göre daha iyi bir deneyimdir (A-B-C-D-E).
Directions API ve DISTANCE Malast API'sinde gerçek zamanlı trafik modelleri 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 bir istekten çıkarılırsa sonuçlar yalnızca fiziksel faktörlere dayanır: yollar, mesafe ve hız sınırları.
GPS verileri kesin olmadığında Seyahat Edilen Rota ve En Yakın Yolu kullanma
Maps Roads API özellikleri olan Route Traveled ve Nearest Road gelişmiş katmana dahildir ve daha yüksek ücretle faturalandırılır. GPS verilerinin kesin olmadığı ve Roads API'nin doğru yolu belirlemeye yardımcı olabileceği yerlerde bu özellikleri kullanın. Roads API'nin bir başka özelliği olan Hız Sınırları, yalnızca Öğe İzleme müşterileri tarafından kullanılabilir.
5 ila 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 ila 15 dakikalık aralıklarla örnekleyin. 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, bir 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ğinin maliyetini optimize etmek için:
Faturalandırma seçeneklerini nasıl kullanacağınız kullanım alanınıza bağlıdır. Uygulamanızın Autcomplete oturumlarını kullanıp kullanmadığına bağlı olarak Otomatik Tamamlama - İstek Başına veya Otomatik Tamamlama - Oturum Başına SKU'ları için ücretlendirilirsiniz.
Kullanım alanınıza yönelik doğru seçeneği belirleme hakkında daha fazla bilgi edinmek ve yardım almak 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 alanlar için veri döndürecek şekilde özelleştirebilirsiniz. Bu alanlar Temel, İletişim ve Atmosfer olmak üzere kategorilere ayrılır. Herhangi bir alan belirtilmeyen istekler, tüm alanlara ait verileri 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'ya bakın.
Geocode API'yi kullanarak maliyetleri azaltma
Uygulamanız kullanıcı tarafından yazılan adresleri işliyorsa bazen adresler belirsizdir (eksik, yanlış yazılmış veya kötü biçimlendirilmiş). Otomatik tamamlama özelliğini kullanarak adresleri netleştirin. Ardından, yer konumlarını öğrenmek için yer kimliklerini kullanın.
Bununla birlikte, tam adresiniz varsa (veya yakın bir adrese sahipseniz), otomatik tamamlama yerine coğrafi kodlamayı kullanarak maliyetleri azaltabilirsiniz. Daha fazla bilgi için Coğrafi Kodlama ile İlgili En İyi Uygulamalar sayfasına 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, gelecekteki aramalar bir sonraki dakikaya kadar kabul edilmez.
Yalnızca başarılı istekler ve sunucu hatalarına neden olan istekler kotaya dahil edilir. Kimlik doğrulamasında başarısız olan istekler kotaya dahil edilmez.
Bazı Haritalar API'leri, dakika başına kota yaptırımına ek olarak saniye başına yaptırım uygular. Saniye başına zorunlu kılma, tüm dakika boyunca tek tip kullanımı garanti etmez ve söz konusu dakika için kullanım kotanıza ulaşmanızı engellemez. Herhangi bir dakikanın ilk veya iki saniyesinde kotanın tamamını tüketmenizi önler ve ani kullanım artışları durumunda sizi hizmet kesintilerine karşı korur. Bu yaptırımların üstesinden gelmek için QPS genelindeki QPM kullanımınızı ortalama alarak kota kullanımınızı ve gereksinimlerinizi planlayın.
Bu saniye başına zorunlu kılma GMP API'leri arasında Directions API, Mesafe Matrisi API'si, Elevation API, Geocode API, Places API ve Roads API bulunur.