Optimizasyon Rehberi

Bu kılavuzda, Google Haritalar API'leri kullanımınızı güvenlik, performans ve tüketim açısından optimize etmek için yararlanabileceğiniz çeşitli stratejiler açıklanmaktadır.

Güvenlik

Güvenlikle ilgili en iyi uygulamaları inceleme

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

Maps API'lere erişmek için API anahtarlarını kullanma

API anahtarları, Google Haritalar API'lerine erişmek için tercih edilen kimlik doğrulama yöntemidir. İstemci kimliklerinin kullanımı şu anda hâlâ desteklense de API anahtarları, 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 API anahtarını güvenli hale getirme 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 sayfasındaki sayfayı ziyaret edin.)

Performans

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

Uygulamalarınızda, kısa süre içinde bir API'yi çok fazla çağırmak girişiminde bulunmaktan kaynaklanan hatalar (ör. QPS hataları) ortaya çıkarsa isteklerin işleme alınmasını sağlamak için üstel geri yükleme kullanmayı düşünün.

Üstel geri yükleme, en çok 500'lerdeki hatalar için yararlıdır. Daha fazla bilgi için HTTP dönüş 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 bekleme süresi ekleyin. Sorguda hâlâ QPS hatası varsa bekleme süresini iki katına çıkarıp başka bir sorgu gönderin. Sorgu hata olmadan döndürülene 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'lere istekler yalnızca istek üzerine gönderilmelidir. Diğer bir deyişle, son kullanıcının API isteğini başlatmak için bir işlem (on-click gibi) gerçekleştirmesini bekleyin, ardından sonuçları bir harita yüklemek, bir hedef belirlemek veya uygun bilgileri görüntülemek için kullanın. İsteğe bağlı bir yaklaşım kullanmak, API'lere gereksiz isteklerin önüne geçerek API tüketimini azaltır.

Harita hareket ederken yer paylaşımlı içeriğin gösterilmesini engelleme

Bir kullanıcının haritayı hareket ettiriyor olabileceği zamanda, haritada özel yer paylaşımlı içerik görüntülemek için Draw() kullanmaktan kaçının. Harita, bir kullanıcı haritayı her hareket ettirdiğinde yeniden çizildiğinden, haritaya aynı anda yer paylaşımlı içerik yerleştirmek gecikmeye veya görsel takılmaya neden olabilir. Yalnızca kullanıcı kaydırmayı veya yakınlaştırmayı durdurduktan sonra haritaya yer paylaşımlı içerik ekleyin veya haritadaki yer paylaşımlı içeriği kaldırın.

Draw yöntemlerinde yoğun işlemlerden kaçınma

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

  • Çok miktarda içerik döndüren sorgular.
  • Görüntülenen verilerde birçok değişiklik.
  • Birçok Belge Nesne Modeli (DOM) öğesini değiştirme.

Bu işlemler, harita oluşturulurken performansı yavaşlatabilir ve gecikmelere veya görsel takılmalara yol açabilir.

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

Harita üzerinde bir konumu tanımlamak için işaretçi eklerken kafesli görseller (.PNG veya .JPG biçimindeki görüntüler gibi) kullanın. SVG resimlerinin oluşturulması, harita yeniden çizildiğinde gecikmeye yol açabileceğinden, Ölçeklenebilir Vektör Grafiği (SVG) resimleri kullanmaktan kaçının.

İşaretçileri 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ğine Maps JavaScript API karar verir. Çok sayıda işaretçi olduğunda, Maps JavaScript API, işaretçileri optimizasyonla oluşturmaya çalışır. Tüm İşaretçiler optimize edilemez. Bazı durumlarda, Maps JavaScript API'nin, işaretçileri optimizasyon yapılmadan 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

Bir haritadaki konumları tanımlamak amacıyla işaretçilerin görüntülenmesini yönetmenize yardımcı olması için Marker Clusterer kitaplığını kullanarak bir işaretçi kümesi oluşturun. İşaretçi Kümecisi kitaplığı şu seçenekleri içerir:

  • Izgara boyutu: Bir kümede birlikte gruplandırılacak işaretçi sayısını belirtir.
  • Kümenin görüntüleneceği maksimum yakınlaştırma düzeyini belirtmek için maksimum yakınlaştırma.
  • İşaretçi simgeleri olarak kullanılacak grafik resimleri için resim yolları.

İzleme

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

  • Maliyetlerinizin belirli bir tutara yaklaşmasını takip etmek için bütçe uyarısı oluşturun. 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ırlayın. Günlük istek sayısı için sınır 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 sınırı (tek API için). Uygulamanız, birden fazla faturalandırılabilir API kullanabilir. Bu nedenle denklemi gerektiği gibi düzenleyin. Her ay 200 ABD doları değerinde Google Haritalar API'leri kredisi sunulmaktadır. Dolayısıyla, 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 düzenli olarak Google Haritalar Platformu API'lerini kullandığınızı varsayalım. Testiniz için kendi kotaları ve API anahtarları olan ayrı bir proje oluşturarak sürpriz harcamalardan korurken kapsamlı bir şekilde 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 haritaların 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 haritayı farklı veri kümeleri gösterecek şekilde 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 ile kullanıcı etkileşimi (yakınlaştırma veya 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 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 sürüme yönlendirebilir.

Maps Embed API'yi kullanma

Maps Embed API'yi kullanarak tek bir işaretçi veya dinamik harita içeren bir haritayı ücretsiz olarak ekleyebilirsiniz. Tek bir işaretçinin kullanıldığı ve harita özelleştirmesinin gerekmediği uygulamalar için Maps Embed API'yi kullanın. Yol Tarifi, Görüntüleme modu veya Arama modunu kullanan Maps Embed API istekleri faturalandırılır (ayrıntılı bilgi 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. Mobil SDK'ların kullanılması zorunlu kılınmadığı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 fiyattan ücretlendirilir.

Optimum yönlendirme için Directions API optimizasyonunu kullanma

Ara nokta optimizasyonu bağımsız değişkenini kullanan istekler daha yüksek bir ü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 uygun rotayı sağlamak için referans noktalarını sıralar. Diğer bir deyişle, A'dan E'ye seyahat, optimize edildiğinde (A-B-C-D-E) optimize edilmemiş bir rotanın rastgele sırasına (ör. A-D-B-C-E) kıyasla daha iyi bir deneyim sunar.

Directions API'de ve Mesafe Matrisi 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 ü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 kesin olmadığında Gidilen Rota ve En Yakın Yolu kullanma

Maps Roads API özellikleri (Gidilen Rota ve En Yakın Yol), gelişmiş katmana dahildir ve daha yüksek bir ücretle faturalandırılır. Bu özellikleri, GPS verilerinin kesin olmadığı ve Roads API'nin doğru yolun belirlenmesine yardımcı olabileceği yerlerde 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ıklarda ö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. Tam değer, bir öğenin seyahat hızına bağlıdır. Bir öğe sabitse tek bir konum örneği yeterli olur. 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.

Yerlerde tüketimi yönetme

Otomatik Yer Tamamlama uygulamalarını optimize etme

Otomatik Yer Tamamlama özelliğini kullanma maliyetini optimize etmek için:

  • Yalnızca ihtiyacınız olan Yer Veri Alanlarını döndürmek için JavaScript, Android ve iOS Otomatik Tamamlama widget'larındaki alan maskelerini kullanın.

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

Kullanım alanınız için doğru seçeneği belirlemeyle ilgili daha fazla bilgi ve yol gösterici bilgiler için Otomatik tamamlama maliyet optimizasyonu en iyi uygulamaları başlıklı makaleye göz atın.

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, Kişi ve Atmosfer. Herhangi bir alan belirtmeyen istekler, tüm alanlar için veri alır.

Yer Ayrıntısı istekleri için faturalandırma, istenen verilerin türlerine ve miktarlarına dayanı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.

Coğrafi Kodlama API'sini kullanarak maliyetleri azaltma

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

Ancak tam adresiniz (veya yakınınızda) varsa Otomatik Tamamlama yerine Coğrafi Kodlama'yı kullanarak maliyetleri azaltabilirsiniz. Daha fazla bilgi için Adreslerin Coğrafi Kodlama ile İlgili En İyi Uygulamaları bölümünü inceleyin.

Google Haritalar Platformu kotalarının işleyiş şekli

Tüm API'lerimizde, her müşterinin yapabileceği çağrı 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 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.

Bazı Maps API'lerde dakika başına kota uygulamasına ek olarak saniye başına yaptırım uygulanır. Saniye başına uygulanan bu uygulama, dakika boyunca tek tip kullanımı garanti etmez veya o dakika için kullanım kotanıza ulaşmanızı engellemez. Bu özellik, bir dakikanın ilk iki saniyesinde kotanızın tamamını tüketmenizi engeller ve ani kullanım artışlarında sizi hizmet kesintilerinden korur. Bu yaptırım farklılıklarıyla başa çıkmak için QPS'deki QPM kullanımınızın ortalamasını alarak kota kullanımınızı ve gereksinimlerinizi planlayın.

Saniye başına bu uygulamaya tabi olan GMP API'leri arasında Directions API, DISTANCE Matrix API, Elevation API, GeoCode API, Places API ve Roads API yer alır.

Toplam istek hacminize göre tüm GMP API ürünleri için tahmini maliyetinizi girin.