जियोकोडिंग के दौरान कोटा के इस्तेमाल को ऑप्टिमाइज़ करना

जियोकोडिंग, पतों ("1600 Amphitheatre Parkway, Mountain View, CA") को भौगोलिक निर्देशांक (37.423021, -122.083739) में बदलने की प्रक्रिया है. इसका इस्तेमाल मार्कर लगाने या मैप को सही जगह पर रखने के लिए किया जा सकता है. Google Maps Platform एपीआई में, जियोकोडिंग के दो तरीके हैं:

  • क्लाइंट-साइड जियोकोडिंग, जो ब्राउज़र में आम तौर पर उपयोगकर्ता की कार्रवाई के जवाब में किया जाता है. Maps JavaScript API, ऐसी क्लास उपलब्ध कराता है जो आपके लिए अनुरोध करती हैं. इस तरीके के बारे में, Maps JavaScript API दस्तावेज़ में बताया गया है.
  • एचटीटीपी सर्वर-साइड जियोकोडिंग, जो आपके सर्वर को जियोकोड के लिए सीधे Google के सर्वर से क्वेरी करने देता है. जियोकोडिंग एपीआई एक वेब सेवा है, जो यह सुविधा देती है. आम तौर पर, इस सेवा को सर्वर साइड पर चलने वाले अन्य कोड के साथ इंटिग्रेट किया जाता है. सर्वर-साइड जियोकोडिंग के बारे में जियोकोडिंग एपीआई के दस्तावेज़ में बताया गया.

क्लाइंट-साइड और सर्वर-साइड जियोकोडिंग के उदाहरण

यहां क्लाइंट-साइड जियोकोडिंग का एक नमूना दिया गया है, जिसमें पता लिया जाता है, उसे जियोकोड किया जाता है, मैप के केंद्र को उस जगह पर ले जाया जाता है, और वहां एक मैप मार्कर जोड़ा जाता है:

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
    });
  }
});

ज़्यादा उदाहरणों के लिए, Maps JavaScript API का दस्तावेज़ देखें.

यहां सर्वर-साइड जियोकोडिंग अनुरोध करने के लिए Python का इस्तेमाल करने का उदाहरण दिया गया है:

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()

यह इस कॉन्टेंट के साथ एक JSON ऑब्जेक्ट बनाता है:

{
  "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
        }
      }
    }
  } ]
}

सर्वर-साइड जियोकोडर, JSON के विकल्प के तौर पर एक्सएमएल फ़ॉर्मैट भी उपलब्ध कराता है. ज़्यादा उदाहरणों के लिए, Python और अन्य भाषाओं के लिए, जियोकोडिंग एपीआई का दस्तावेज़ और क्लाइंट लाइब्रेरी देखें.

कोटा और लागत का ध्यान

जियोकोडिंग लागत, कोटा, और दर की सीमा, इस दस्तावेज़ में बताई गई रणनीतियों के मुताबिक काम करती हैं.

कीमत

जियोकोडिंग अनुरोधों के लिए हर दिन के कोटे (क्यूपीडी) की सीमाओं का अब इस्तेमाल नहीं किया जाता है. इसके बजाय, हर जियोकोडिंग अनुरोध, ब्राउज़र के ज़रिए क्लाइंट-साइड या जियोकोडिंग एपीआई वेब सेवा के ज़रिए सर्वर-साइड से हर एक शुल्क के लिए बिल लिया जाता है. अपने इस्तेमाल की लागत मैनेज करने के लिए, हर दिन का कोटा कैप करने पर विचार करें.

दर की सीमाएं

जियोकोडिंग सेवा की दर 3,000 क्यूपीएम (क्वेरी प्रति मिनट) तक सीमित है इसका हिसाब क्लाइंट-साइड और सर्वर साइड क्वेरी के कुल योग के आधार पर लगाया जाता है.

अगर आपके सभी उपयोगकर्ता एक ही समय पर अनुरोध करते हैं (उदाहरण के लिए, हर मिनट की एक सेकंड पर) तो, समय-समय पर (जैसे, मोबाइल ऐप्लिकेशन) पर आपके अनुरोधों के जवाब गड़बड़ियां दिख सकती हैं. इससे बचने के लिए, इनमें से कोई एक तरीका अपनाएं:

  • अपने अनुरोधों से किसी भी क्रम में लगने वाले इंटरवल के बारे में बताएं (जिटर). पक्का करें कि आपके पूरे यूज़र बेस से किसी भी क्रम में अनुरोध किए गए हों.
  • अगर इसे Android के लिए सेट किया जा रहा है, तो दोहराए जाने वाले अलार्म का इस्तेमाल करें.
  • अगर इसे Android के लिए डेवलप किया जा रहा है, तो जगह की जानकारी के लिए सही रणनीति चुनें.

कैश मेमोरी में सेव करना

कैश मेमोरी में सेव करने के बारे में जियोकोडिंग एपीआई की नीतियां देखें.

क्लाइंट-साइड जियोकोडिंग का इस्तेमाल कब करें

इसका छोटा जवाब है "करीब-करीब हमेशा." इसकी वजहें यहां दी गई हैं:

  • क्लाइंट-साइड से किए गए अनुरोध और उनके जवाब की मदद से, उपयोगकर्ताओं को तेज़ और इंटरैक्टिव अनुभव मिलता है.
  • क्लाइंट-साइड के अनुरोध में ऐसी जानकारी शामिल हो सकती है जिससे जियोकोडिंग की क्वालिटी बेहतर हो: उपयोगकर्ता की भाषा, इलाका, और व्यूपोर्ट.

खास तौर पर, उपयोगकर्ता के इनपुट के आधार पर पते की जियोकोडिंग होने पर क्लाइंट-साइड जियोकोडिंग सबसे अच्छा विकल्प है.

क्लाइंट-साइड जियोकोडिंग के लिए दो बुनियादी आर्किटेक्चर हैं:

  • जियोकोडिंग और डिस्प्ले पूरी तरह से ब्राउज़र में ही करें. उदाहरण के लिए, उपयोगकर्ता आपके पेज पर कोई पता डालता है. आपका ऐप्लिकेशन इसे जियोकोड करता है. इसके बाद, आपका पेज मैप पर मार्कर बनाने के लिए जियोकोड का इस्तेमाल करता है. इसके अलावा, आपका ऐप्लिकेशन जियोकोड का इस्तेमाल करके कुछ आसान तरीके से विश्लेषण करता है. आपके सर्वर पर कोई डेटा नहीं भेजा जाता. इससे आपके सर्वर पर लोड कम हो जाता है.
  • ब्राउज़र में जियोकोडिंग करें और फिर इसे सर्वर पर भेजें. उदाहरण के लिए, उपयोगकर्ता आपके पेज पर कोई पता डालता है. आपका ऐप्लिकेशन उसे ब्राउज़र में जियोकोड करता है. इसके बाद, ऐप्लिकेशन आपके सर्वर पर डेटा भेजता है. सर्वर कुछ डेटा के साथ जवाब देता है, जैसे कि आस-पास की लोकप्रिय जगहें. इसकी मदद से, अपने डेटा के आधार पर जवाब को पसंद के मुताबिक बनाया जा सकता है.

सर्वर साइड जियोकोडिंग का इस्तेमाल कब करें

सर्वर-साइड जियोकोडिंग का सबसे अच्छा इस्तेमाल ऐसे ऐप्लिकेशन के लिए किया जाता है, जिनके लिए आपको किसी क्लाइंट से इनपुट के बिना पतों को जियोकोड करना होता है. इसका एक सामान्य उदाहरण आपको एक ऐसा डेटासेट मिलता है जो उपयोगकर्ता के इनपुट से अलग आता है. उदाहरण के लिए, अगर आपके पास पतों का एक तय, सीमित, और जाने-पहचाने सेट है, जिसके लिए जियोकोडिंग की ज़रूरत है. क्लाइंट-साइड जियोकोडिंग के काम न करने पर, सर्वर-साइड जियोकोडिंग से भी मदद मिल सकती है.

इसकी कुछ समस्याओं की वजह से, उपयोगकर्ता को इंतज़ार का समय बढ़ सकता है. साथ ही, क्लाइंट-साइड के मुकाबले कम क्वालिटी वाले जियोकोड के नतीजे हो सकते हैं, क्योंकि अनुरोध में कम जानकारी उपलब्ध होती है.