Coğrafi Kodlama Sırasında Kota Kullanımını Optimize Etme

Coğrafi kodlama, adresleri ("1600 Amphitheatre Parkway, Mountain View, CA") coğrafi koordinatlara (37.423021, -122.083739) dönüştürme işlemidir. Bu koordinatları işaretçi yerleştirmek veya haritayı konumlandırmak için kullanabilirsiniz. Google Haritalar Platformu API'leri, coğrafi kodlama konusunda iki yaklaşım sunar:

  • İstemci tarafı coğrafi kodlama, genellikle kullanıcı işlemine yanıt olarak tarayıcıda yürütülür. Maps JavaScript API, sizin için istekte bulunan sınıflar sağlar. Bu yaklaşım, Haritalar JavaScript API dokümanlarında açıklanmıştır.
  • HTTP sunucu tarafı coğrafi kodlama, sunucunuzun coğrafi kodlar için Google sunucularını doğrudan sorgulamasına olanak tanır. Geocoding API, bu işlevi sağlayan web hizmetidir. Genellikle bu hizmeti sunucu tarafında çalışan başka bir kodla entegre edersiniz. Sunucu tarafı coğrafi kodlama, Geocoding API belgelerinde açıklanmıştır.

İstemci tarafı ve sunucu tarafı coğrafi kodlama örnekleri

Aşağıda, bir adresi alan, coğrafi kodlamayı yapan, haritanın merkezini söz konusu konuma taşıyan ve oraya bir harita işaretleyici ekleyen istemci tarafı coğrafi kodlama örneği verilmiştir:

geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address }, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
      map: map,
      position: results[0].geometry.location
    });
  }
});

Daha fazla örnek için Haritalar JavaScript API dokümanlarına bakın.

Aşağıda, sunucu tarafı coğrafi kodlama isteği yapmak için Python'un kullanıldığı bir örnek verilmiştir:

import urllib2

address="1600+Amphitheatre+Parkway,+Mountain+View,+CA"
key="my-key-here"
url="https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s" % (address, key)

response = urllib2.urlopen(url)

jsongeocode = response.read()

Bu komut, aşağıdaki içeriğe sahip bir JSON nesnesi oluşturur:

{
  "status": "OK",
  "results": [ {
    "types": street_address,
    "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
    "address_components": [ {
      "long_name": "1600",
      "short_name": "1600",
      "types": street_number
    }, {
      "long_name": "Amphitheatre Pkwy",
      "short_name": "Amphitheatre Pkwy",
      "types": route
    }, {
      "long_name": "Mountain View",
      "short_name": "Mountain View",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "San Jose",
      "short_name": "San Jose",
      "types": [ "administrative_area_level_3", "political" ]
    }, {
      "long_name": "Santa Clara",
      "short_name": "Santa Clara",
      "types": [ "administrative_area_level_2", "political" ]
    }, {
      "long_name": "California",
      "short_name": "CA",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "United States",
      "short_name": "US",
      "types": [ "country", "political" ]
    }, {
      "long_name": "94043",
      "short_name": "94043",
      "types": postal_code
    } ],
    "geometry": {
      "location": {
        "lat": 37.4220323,
        "lng": -122.0845109
      },
      "location_type": "ROOFTOP",
      "viewport": {
        "southwest": {
          "lat": 37.4188847,
          "lng": -122.0876585
        },
        "northeast": {
          "lat": 37.4251799,
          "lng": -122.0813633
        }
      }
    }
  } ]
}

Sunucu tarafındaki coğrafi kodlayıcı, JSON'a alternatif olarak XML biçimi de sağlar. Daha fazla örnek görmek için Geocoding API belgelerine ve Python ve diğer diller için istemci kitaplıklarına bakın.

Kota ve maliyetle ilgili dikkat edilmesi gereken noktalar

Coğrafi kodlama maliyetleri, kotaları ve hız sınırları bu belgede belirtilen stratejilerin temelini oluşturur.

Maliyet

Coğrafi kodlama istekleri için gün başına kota (QPD) sınırları artık kullanılmamaktadır. Bunun yerine, coğrafi kodlama API'si web hizmeti üzerinden ister istemci tarafında ister sunucu tarafında olsun, her coğrafi kodlama isteği her bir fiyat üzerinden faturalandırılır. Kullanım maliyetinizi yönetmek için günlük kotanızı sınırlamayı düşünebilirsiniz.

Hız sınırları

Coğrafi kodlama hizmeti,istemci tarafı ve sunucu tarafı sorguların toplamı olarak hesaplanan, 3.000 QPM (dakika başına sorgu sayısı) ile sınırlıdır.

Mobil uygulama gibi düzenli aralıklarla istemci tarafı coğrafi kodlama istekleri çalıştırırken tüm kullanıcılarınız aynı anda istekte bulunuyorsa (örneğin, her dakika aynı saniyede) istekleriniz hata döndürebilir. Bunu önlemek için aşağıdakilerden birini göz önünde bulundurun:

  • İsteklerinize rastgele aralıklar (ses dalgalanması) ekleyin. Tüm kullanıcı tabanınızda isteklerin rastgele olduğundan emin olun.
  • Android için geliştirme yapıyorsanız değişken olmayan yinelenen alarm kullanın.
  • Android için geliştirme yapıyorsanız uygun bir konum stratejisi seçin.

Önbelleğe alma

Önbelleğe alma hakkında Coğrafi Kodlama API Politikaları'na bakın.

İstemci tarafı coğrafi kodlama ne zaman kullanılır?

Bu sorunun kısa yanıtı "neredeyse her zaman"dır. Bunun nedenleri şunlardır:

  • İstemci tarafı istek ve yanıt, kullanıcılar için daha hızlı ve daha etkileşimli bir deneyim sağlar.
  • İstemci tarafı istekleri; kullanıcı dili, bölge ve görüntü alanı gibi coğrafi kodlama kalitesini iyileştiren bilgiler içerebilir.

Özellikle istemci tarafında coğrafi kodlama, kullanıcıların girişlerine göre adreslerin coğrafi kodlamasını yaparken en iyi seçenektir.

İstemci tarafı coğrafi kodlama için iki temel mimari vardır:

  • Coğrafi kodlamayı ve görüntülemeyi tamamen tarayıcıda yapın. Örneğin, kullanıcı, sayfanıza bir adres girer. Uygulamanız bunun coğrafi kodlamasını yapar. Ardından sayfanızda, harita üzerinde bir işaretleyici oluşturmak için coğrafi kod kullanılır. Uygulamanız, coğrafi kodu kullanarak basit analizler de yapar. Sunucunuza veri gönderilmez. Bu da sunucunuzdaki yükü azaltır.
  • Coğrafi kodlamayı tarayıcıda yapın ve ardından, sunucuya gönderin. Örneğin, kullanıcı, sayfanıza bir adres girer. Uygulamanız, tarayıcıda uygulamanızın coğrafi kodlamasını yapar. Daha sonra uygulama, verileri sunucunuza gönderir. Sunucu, yakındaki önemli yerler gibi bazı verilerle yanıt verir. Bu sayede yanıtı kendi verilerinize göre özelleştirebilirsiniz.

Sunucu tarafı coğrafi kodlama ne zaman kullanılır?

Sunucu tarafı coğrafi kodlama en iyi, bir istemciden giriş olmadan adreslerin coğrafi kodlamasını yapmanızı gerektiren uygulamalar için kullanılır. Bunun yaygın bir örneği, kullanıcı girişinden bağımsız olarak gelen bir veri kümesi almanızdır. Örneğin, coğrafi kodlama gerektiren sabit, sonlu ve bilinen bir adres grubunuz olabilir. Sunucu tarafı coğrafi kodlama, istemci tarafı coğrafi kodlama başarısız olduğunda yedek olarak da yararlı olabilir.

Bazı olası endişeler, kullanıcı için gecikmede gereksiz artış ve istekte daha az bilgi bulunduğundan, sonuçların istemci tarafında olduğundan daha düşük kalitede olan coğrafi kodlamanın olmasıdır.