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 almayı hak eden proje merkezli kimlik bilgileridir. Anahtarlarınızı istenmeyen kullanımlardan korumak için API Güvenliği En İyi Uygulamaları'nı inceleyin. Bu durum, aşırı kota kullanımı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'lerine erişmek 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'larla (Android ve iOS) çalışacak şekilde ayarlanabilir. API anahtarı oluşturma ve anahtarı güvenceye alma 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 hakkındaki sayfasını ziyaret edin.)

Performans

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

Uygulamalarınızda, kısa süre içinde çok sayıda API çağırma girişiminden kaynaklanan hatalar (ör. QPS hataları) varsa isteklerin işleme alınmasına izin vermek için üstel geri çekilme özelliğini kullanabilirsiniz.

Ü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 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ö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. Bu, son kullanıcının API isteğini başlatmak için bir işlem (on-click gibi) gerçekleştirmesini beklemek, ardından sonuçları bir 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 kullanmak, API'lere gereksiz istekler yapılmasını önleyerek API tüketimini azaltır.

Harita hareket ederken yer paylaşımlı içerik görüntülemekten kaçınma

Bir kullanıcının haritayı hareket ettirdiği sırada özel yer paylaşımlı içerik görüntülemek için Draw() kullanmaktan kaçının. Harita, kullanıcı haritayı her hareket ettirdiğinde yeniden çizildiğinden, haritaya aynı anda yer paylaşımlı içerik yerleştirmek gecikme veya görsel kesintilere yol açabilir. Bir haritaya yer paylaşımlı içeriği yalnızca kullanıcı kaydırmayı veya yakınlaştırmayı durdurduktan sonra ekleyin veya kaldırın.

Draw yöntemlerinde yoğun işlemler engelleniyor

Genel kural olarak, Draw() yönteminde performansı yoğun olan çizim dışı 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 yapıldı.
  • Birçok Belge Nesne Modeli (DOM) öğesini değiştirme.

Bu işlemler, harita oluşturulduğunda performansı yavaşlatabilir ve gecikmeye veya görsel takılmaya neden olabilir.

İşaretçiler için kafes resimleri kullanma

Haritada bir konumu tanımlamak için işaretçi eklerken kafesli resimler (.PNG veya .JPG biçimindeki resimler gibi) kullanın. SVG resimlerinin oluşturulması, haritanın yeniden çizilmesinde gecikmeye neden olabileceğinden Ölçeklenebilir Vektör Grafikleri (SVG) resimlerini 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ı olur. Varsayılan olarak, bir işaretçinin optimize edilip edilmeyeceğine Maps JavaScript API'si karar verir. Çok sayıda işaretçi olduğunda, Maps JavaScript API, işaretçileri optimize edilmiş şekilde oluşturmaya çalışır. Tüm İşaretçiler optimize edilemez. Bazı durumlarda, Maps JavaScript API'nin, İşaretçileri optimizasyon olmaksızın 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

Harita üzerinde konumları tanımlamak amacıyla işaretçilerin görüntülenmesini yönetmenize yardımcı olması için İşaretçi Kümeleyicisi kitaplığını kullanarak bir işaretçi kümesi oluşturun. İşaretçi Kümeleyici kitaplığı şu 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örüntüleneceği maksimum yakınlaştırma düzeyini belirtmek için maksimum yakınlaştırma.
  • Grafik görsellerinin işaretçi simgeleri olarak kullanılması için kullanılan 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ı 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'lerinizin 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ır belirleyerek maliyetlerinizi sınırlayabilirsiniz. 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ı sınırı (bir API için). Özel uygulamanızda birden fazla faturalandırılabilir API kullanılabilir. Bu nedenle denklemi gerektiği gibi düzenleyin. Her ay 200 ABD doları değerinde Google Haritalar API'leri kredisi kullanabilirsiniz. Bu nedenle, hesaplamalarınızda bu krediyi hesaba katın.
  • Kullanımınızı ayırmak, önceliklendirmek ve izlemek için birden fazla projeden yararlanı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ı bulunan ayrı bir proje oluşturarak sürpriz harcamalara karşı koruma sağlarken bunu kapsamlı bir şekilde test edebilirsiniz.

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üntüsü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ümelerini 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örülmüyorsanız bu API'lerin statik sürümlerini kullanın.

Statik Haritalar ve Statik Street View için başka bir kullanışlı özellik de küçük resimler olan çok küçük haritalar ve fotoğraflardır. Bu öğeler, daha düşük ücretle ve kullanıcı etkileşimi (tıklandığında) üzerinden faturalandırılır ve kullanıcıları tam bir Google Haritalar deneyimi için dinamik sürüme yönlendirebilir.

Maps Embed API'yi kullanma

Tek bir işaretçi veya dinamik harita içeren bir haritayı ücretsiz olarak eklemek için Maps Embed API'yi kullanabilirsiniz. Tek bir işaretçinin kullanıldığı ve harita özelleştirmesinin gerekli olmadığı uygulamalar için Maps Embed API'yi kullanın. Yol Tarifi, Görüntüleme veya Arama modunu kullanan Maps Embed API istekleri faturalandırılır (ayrıntılı bilgi için fiyatlandırma tablosunu inceleyin).

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'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ırlayın. 10'dan fazla ara nokta içeren istekler daha yüksek ücretle faturalandırılır.

Optimum rota 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 Ara Noktaları Optimize Etme konusuna bakın.

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

Directions API'sinde ve Mesafe Matrisi API'sinde gerçek zamanlı trafik modelleri kullanma

Gerçek zamanlı trafik modelleri içeren Directions API ve Distance Matrix API istekleri daha yüksek bir fiyattan 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 Rotayı ve En Yakın Yolu Kullanma

Maps Roads API özellikleri (Gidilen Rota ve En Yakın Yol), gelişmiş katman kapsamındadır 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 durumlarda 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, bir öğenin seyahat hızına bağlıdır. Bir öğe sabitse tek bir konum örneği yeterlidir. Birden fazla arama yapmanıza gerek yoktur.

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

Yer Otomatik Tamamlama uygulamalarını optimize etme

Otomatik Yer Tamamlama özelliğinin kullanım 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ında alan maskelerini kullanın.

  • faturalandırma seçenekleri arasından seçim yapmak 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 için ücret alınır.

Kullanım alanınız için doğru seçeneği belirleme konusunda daha fazla bilgi ve yol gösterici bilgiler için Otomatik tamamlama maliyet optimizasyonuyla ilgili en iyi uygulamaları yerleştirme 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 alanlara ilişkin verileri döndürmek için Yer Ayrıntıları ve Yer Arama isteklerini ö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 veri 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.

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'yı kullanarak adresleri açıklığa kavuşturun, ardından yer konumlarını almak için yer kimliklerini kullanın.

Ancak tam adresiniz varsa (veya bu adresin yakınındaysa) Otomatik Tamamlama yerine Coğrafi Kodlama'yı kullanarak maliyetleri azaltabilirsiniz. Daha fazla bilgi için Coğrafi Kodlama Adresleri 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 ç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.

Dakika başına kota uygulamasına ek olarak bazı Maps API'lerde saniye başına yaptırım uygulanır. Saniye başına uygulanan bu uygulama, bir 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 saniyesinde veya ikisinde kotanızın tamamını tüketmenizi engeller ve ani kullanım artışları durumunda sizi hizmet kesintilerinden korur. Bu yaptırım farklılıklarını çözmek için QPS'de QPM kullanımınızın ortalamasını alarak kota kullanımınızı ve gereksinimlerinizi planlayın.

Saniye başına bu uygulamaya sahip GMP API'leri arasında Directions API, Distance Matrix API, Elevation API, Geocoding API, Places API ve Roads API yer alır.

Herhangi bir GMP API ürünü için maliyetlerinizi, toplam istek hacminize göre tahmin edin.