2012-03-21 6 views
18

मैं latlng में पते का अनुवाद करने के लिए सर्वर पक्ष पर geocoding एपीआई का उपयोग कर रहा हूँ। मुझे एक OVER_QUERY_LIMIT स्थिति का सामना करना पड़ा, भले ही: - सर्वर 2500 सीमा से अधिक नहीं था (इस दिन केवल कुछ अनुरोध) - यह एक साथ कई अनुरोध नहीं करता था (एक समय में केवल एक ही अनुरोध)क्वेरी सीमा पर Geocoding एपीआई

यह कैसे संभव है? अगले दिन geocoding अच्छी तरह से काम कर रहा था, लेकिन मैं लंबे समय में सही ढंग से काम कर मेरे आवेदन के बारे में चिंतित हूं।

अग्रिम धन्यवाद।

+2

हमें 3 जी पर लोगों के लिए एक ही OVER_QUERY_LIMIT त्रुटि मिली, जबकि जब वे वाईफाई का उपयोग कर रहे थे तो यह सही तरीके से काम कर रहा था। 3 जी के साथ समस्या यह है कि मैंने जो पढ़ा है, अधिकांश समय एनएटी का उपयोग किया जाता है, इसलिए एक ही प्रदाता के सभी उपयोगकर्ता एक ही सार्वजनिक पते को समाप्त कर सकते हैं और इस प्रकार यह आईपी पता आसानी से सीमा से अधिक हो जाएगा। – user276648

उत्तर

4

हमें यह समस्या भी थी और समाधान Google के एपीआई को कुचलने के लिए था। यदि आपको केवल जियोकोडिंग की आवश्यकता है तो ऐसे कई विकल्प हैं जो सीमाओं के बिना समान रूप से प्रभावी हैं। हमने मैपक्वेट एपीआई चुना है। यह geocoding कॉल पर कोई टोपी के साथ तेजी से और अधिक भरोसेमंद रहा है और मैं वास्तव में एक ही कॉल में geocoding अनुरोधों को एक साथ बैच करने के लिए अपने एपीआई पसंद है।

यदि आपकी अन्य आवश्यकताएं हैं, तो जाहिर है कि आपको उन्हें ध्यान में रखना होगा, लेकिन एक सुविधा के मामले में, ब्लॉक पर सबसे बड़ी एपीआई का उपयोग करना सबसे अच्छा विकल्प नहीं है।

developer.mapquest.com

+0

मेरा पहला झुकाव इसे पढ़ने के बाद मैपक्वेस्ट के लिए Google मानचित्र को कुचलना है। लेकिन जब तक मैक्वेस्ट रेट लिमिटर लागू करता है तब तक कितना समय लगता है? स्विचिंग लागत महत्वपूर्ण हैं। – steampowered

+0

दरअसल, दुख की बात है कि, नक्शा ने पहले ही दर सीमा लागू की है। Google की डबल, लेकिन यह वहां है। मेरे उत्तर में एक अपडेट है कि मेरे कोड को फोर्क करना है (हालांकि एक अच्छा encapsulated तरीके से) जैसे कि आईओएस 5 पर मैं ऐप्पल के geocoding एपीआई का उपयोग करता हूं और सभी पुराने आईओएस संस्करणों के लिए मैं mapquest का उपयोग करता हूं। यह बहुत प्रभावी रहा है क्योंकि पुराने आईओएस संस्करणों का उपयोग करने वाले उपकरणों का प्रतिशत हर दिन गिर रहा है, हम शायद ही कभी मैकक्वेस्ट दैनिक सीमा को हिट करते हैं (हालांकि ऐसा होता है इसलिए हमारे पास एक शानदार फॉलबैक है)। बेशक यह केवल आईओएस के लिए मदद करता है। अन्य प्लेटफार्मों को अभी भी एक समाधान की आवश्यकता है :( – NSProgrammer

33

इस तरह मैंने पहले भी इस मुद्दे को संभाला है। मैं परिणाम की स्थिति की जांच करता हूं और यदि मुझे सीमा त्रुटि मिलती है और मैं थोड़ी देर के बाद इसे फिर से कोशिश करता हूं।

function Geocode(address) { 
    geocoder.geocode({ 
     'address': address 
    }, function(results, status) { 
     if (status === google.maps.GeocoderStatus.OK) { 
      var result = results[0].geometry.location; 
      var marker = new google.maps.Marker({ 
       position: result, 
       map: map 
      }); 
     } else if (status === google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {  
      setTimeout(function() { 
       Geocode(address); 
      }, 200); 
     } else { 
      alert("Geocode was not successful for the following reason:" 
        + status); 
     } 
    }); 
} 

अद्यतन: व्हाउप्स, गलती से सर्वर पक्ष भाग पर चमक गया। यहां एक सी # संस्करण है:

public XElement GetGeocodingSearchResults(string address) 
{ 
    var url = String.Format(
     "https://maps.google.com/maps/api/geocode/xml?address={0}&sensor=false", 
      Uri.EscapeDataString(address)); 

    var results = XElement.Load(url); 

    // Check the status 
    var status = results.Element("status").Value; 

    if(status == "OVER_QUERY_LIMIT") 
    { 
     Thread.Sleep(200); 
     GetGeocodingSearchResults(address); 
    }else if(status != "OK" && status != "ZERO_RESULTS") 
    { 
     // Whoops, something else was wrong with the request...  
    } 

    return results; 
} 
+1

जेएस कोड के लिए धन्यवाद। एक पुनः प्रयास के साथ देरी सेट करना बहुत अच्छा काम करता है। – steampowered

+0

सी # समाधान के बारे में कुछ मुझे देखता है। यह कॉलर को XElement देता है। हालांकि, अगर GetGeocodingSearchResults() 'दूसरी बार कहा जाता है कि नतीजा नजरअंदाज कर दिया जाता है। और यदि आपने' गेट गेटिंगोडिंग सर्च रिजल्ट्स (पता) वापस लौटने के लिए लाइन बदल दी है, तो आप स्टैक को ओवरफ्लो कर सकते हैं। एक वैकल्पिक समाधान इस कोड को लूप में सफलता या पूर्व निर्धारित होने तक चलाने के लिए होगा असफलताओं की संख्या। यह भी ध्यान दिया जाना चाहिए कि यह अनुरोध दर को कम करेगा, आपको अभी भी दैनिक सीमा के बारे में चिंता करने की आवश्यकता है। – dana

+0

यह बहुत अच्छा काम करता है! – UmbySlipKnot

2

आप क्लाइंट पक्ष पर जियोकोडिंग भी कर सकते हैं। यहां कुछ क्लाइंट साइड और कुछ सर्वर साइट करने के दृष्टिकोण की तुलना में an article है।

0

Google, Bing, MapQuest, और याहू! मानचित्र (क्या यह एपीआई अभी भी आसपास है?) बेहद शक्तिशाली उपकरण हैं। उनके पास बहुत सी हॉर्स पावर है जो उन्होंने आपके द्वारा प्रदान किए गए पते को समझने और भूगर्भलन के लिए उचित रूप से स्वरूपित पते में लाने के लिए हर संभव प्रयास कर रहे हैं। एक निश्चित डिग्री के लिए वे स्वतंत्र हैं। उनके पास वॉल्यूम सीमाएं और बहुत सख्त नियम सेवा (टीओएस) है जो कि यदि आप अपनी सेवा का व्यावसायिक रूप से उपयोग करना शुरू करते हैं और विशेष रूप से यदि आप इसे किसी अन्य उत्पाद में एकीकृत करते हैं तो एक कारक हो सकता है।

ध्यान रखें कि उनमें से सभी "पता अनुमान" पता सत्यापन नहीं करते हैं। अगर आप पता मौजूद हैं तो वे आपको बताएंगे कि एक निश्चित सड़क पर एक पता कहाँ स्थित होगा। वे आपको नहीं बता सकते कि जिस पते को आप ढूंढ रहे हैं वह मौजूद है। इसे सत्यापित करने का एक तरीका है Google मानचित्र में अपना स्वयं का पता देखना। सड़क दृश्य में सभी तरह से ज़ूम करें और आप देखेंगे कि वे "पता अनुमानित है" भले ही उनके पास स्थान निश्चित रूप से पिन हो। उनके पास तुलना करने के लिए पते की मास्टर सूची नहीं है और पता है कि कौन से पते वास्तविक हैं। इसके लिए, आपको किसी प्रकार का पता सत्यापन की आवश्यकता होगी।

पता सत्यापन मुफ्त मैपिंग सेवाओं के समान तरीके से किसी दिए गए पते को मानकीकृत और साफ़ करता है लेकिन यह पते को वास्तव में मौजूद है या नहीं, यह पुष्टि करने के लिए पते के पते के यूएसपीएस डेटाबेस से तुलना करता है। पुष्टि किए गए पते को फिर बेहतर सटीकता के साथ geocoded किया जा सकता है।

वहां बहुत अच्छी पता सत्यापन सेवाएं हैं। पूर्ण प्रकटीकरण के हित में, मैं एक - SmartyStreets का संस्थापक हूं।

1

Google यह वही प्रतिक्रिया देता है यदि कोई पता नहीं मिला। इसका मतलब यह नहीं है कि आप कोटा पार कर चुके हैं। किसी भी मामले में आप अपवाद को पकड़ने और इसके चारों ओर एक बचाव को लागू करने से बेहतर होंगे।

+0

यह वी 3 के लिए सच नहीं है। आपको शून्य परिणामों के साथ एक वैध प्रतिक्रिया मिलती है। वी 2 के बारे में टिप्पणी करने के बाद से कोई डाउनवोट नहीं है और मुझे नहीं पता कि परिणाम क्या था। –

1

उपयोगकर्ता 276648 के समान समस्या। एपीआई कुंजी जोड़कर और https को http में बदलकर इसे हल करें।

संबंधित मुद्दे