2009-07-21 22 views
6

के लिए प्रतिक्रिया देता है मैं Google geocoding सेवा का उपयोग कर रहा हूं ताकि यह सत्यापित किया जा सके कि हमारे सिस्टम में दर्ज किया गया शहर नाम (प्लस क्षेत्र और देश) मौजूद है, और अक्षांश/लंबा प्राप्त करने के लिए।Google geocoding सेवा नकली पते

हालांकि, मुझे लगता है कि यदि आप टाइपो बनाते हैं तो यह अनुमान लगाता है, और यदि आपने कोई त्रुटि की है तो भी प्रतिक्रिया देता है।

उदाहरण के लिए, "बेवर्टन, ओन्टारियो, कनाडा" के लिए अनुरोध बेवरटन के लिए लेट/लम्बाई देता है, इस बात का कोई संकेत नहीं कि आपने गलत शहर का नाम प्रदान किया है।

मैं सीएसवी प्रतिक्रिया प्रकार का उपयोग कर रहा हूं, और 200 प्रतिक्रिया कोड प्राप्त कर रहा हूं।

क्या मैं या तो सेवा करने से रोक सकता हूं, या बेहतर, अभी पता कर सकता हूं कि क्या यह है?

संपादित करें: स्पष्टीकरण के लिए ... Google इनपुट को सही कर रहा है (जब मैं इसे असफल होने की उम्मीद करता हूं) और मुझे यह जानना होगा कि उसने ऐसा किया है या नहीं।

+0

मुझे लगता है कि सीएसवी प्रतिक्रिया प्रकार आपके सभी विकल्पों का कम से कम विस्तृत विवरण है। एक संभावित विकल्प के लिए नीचे मेरा जवाब देखें। –

+0

मुझे किसी भी मैपिंग सेवा के साथ "बेवर्टन, ओन्टारियो" नहीं मिला। क्या आप वाकई सही हैं? http://geonames.nrcan.gc.ca/search/search_e.php –

+0

ठीक है, कोई "बेवर्टन" नहीं है ... शहर "बीवरटन" है (ए नोट करें – Buzz

उत्तर

3

वहाँ जियोकोडर आप जानते हैं कि इसे लगता है कि एक टाइपो था जाने के लिए के लिए किसी भी तरह से नहीं है। मैं शाऊल के जवाब से सहमत हूं, कि आपकी सबसे अच्छी शर्त प्रतिक्रिया के खिलाफ अपनी क्वेरी जांचना है।

मैं बस यह इंगित करना चाहता था कि मिलान करने वाले तत्वों को ढूंढने के लिए आपको कई प्रतिक्रिया मानों के विरुद्ध अपने इनपुट के कई तत्वों को जांचना होगा। इस मामले में, "बीवरटन" "निर्भर ऋण नाम" के अंदर पाया गया था।

<?xml version="1.0" encoding="UTF-8" ?> 
<kml xmlns="http://earth.google.com/kml/2.0"><Response> 
    <name>Beverton, Ontario, Canada</name> 
    <Status> 
    <code>200</code> 
    <request>geocode</request> 
    </Status> 
    <Placemark id="p1"> 

    <address>Beaverton, Brock, ON, Canada</address> 
    <AddressDetails Accuracy="4" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>CA</CountryNameCode><CountryName>Canada</CountryName><AdministrativeArea><AdministrativeAreaName>ON</AdministrativeAreaName><SubAdministrativeArea><SubAdministrativeAreaName>Durham Regional Municipality</SubAdministrativeAreaName><Locality><LocalityName>Brock</LocalityName><DependentLocality><DependentLocalityName>Beaverton</DependentLocalityName></DependentLocality></Locality></SubAdministrativeArea></AdministrativeArea></Country></AddressDetails> 
    <ExtendedData> 
     <LatLonBox north="44.4502166" south="44.4183470" east="-79.1199562" west="-79.1839858" /> 
    </ExtendedData> 

    <Point><coordinates>-79.1519710,44.4342840,0</coordinates></Point> 
    </Placemark> 
</Response></kml> 

अद्यतन:

यह असंभव वास्तव में लागू करने के लिए हो सकता है। यदि आपका इनपुट "बेवर्टन, ओन्टारियो, कनाडा" है, तो आप कैसे जानते हैं कि उन तीनों शब्दों में से कौन सा चेक? उनमें से दो ठीक से मिलेंगे। क्या होगा यदि वे एक अलग क्रम में प्रवेश कर रहे हैं?

+0

यह सच साबित होता है। निजी तौर पर, मुझे लगता है कि एपीआई के मुताबिक आपके द्वारा प्रदान किए गए एक बिल्कुल अलग अनुरोध के लिए प्रतिक्रिया वापस करने के लिए यह अजीब बात है! – Buzz

+0

यह मुझे लगता है जैसे Google की जियोकोडिंग सेवा में सुधार के लिए कमरा है।शायद वे किसी भी तरह से संकेत दे सकते हैं कि स्थान डेटा में "अस्पष्ट" प्रतिक्रिया प्रदान की गई है। –

0

क्या यह "200 सफलता कोड" के साथ प्रतिक्रिया दे रहा है? एक मौका है कि यह आपको एक अलग स्थिति कोड दे सकता है।

यहां विभिन्न स्थिति कोड रिटर्न गूगल हैं: http://code.google.com/apis/maps/documentation/reference.html#GGeoStatusCode

+0

हां, मुझे 200 मिल रहा है। अद्यतन प्रश्न। – Buzz

0

नोट: answer by @Chris B ऊपर देखें। जैसा कि क्रिस बताते हैं, यह लागू करना असंभव हो सकता है।

क्या आपको सीएसवी प्रतिक्रिया प्रकार का उपयोग करना है? यदि नहीं, तो केएमएल जैसे अन्य प्रतिक्रिया प्रकार समन्वय को संदर्भित करने वाले स्थान को निर्धारित करने के लिए पर्याप्त विवरण प्रदान करते हैं। आप प्रतिक्रिया के लोकैलिटीनाम तत्व के खिलाफ अपना इनपुट सत्यापित कर सकते हैं।

<kml xmlns="http://earth.google.com/kml/2.0"> 
    <Response> 
    <name>1600 amphitheatre mountain view ca</name> 
    <Status> 
     <code>200</code> 
     <request>geocode</request> 
    </Status> 
    <Placemark> 
     <address> 
     1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA 
     </address> 
     <AddressDetails Accuracy="8"> 
     <Country> 
      <CountryNameCode>US</CountryNameCode> 
      <AdministrativeArea> 
      <AdministrativeAreaName>CA</AdministrativeAreaName> 
      <SubAdministrativeArea> 
      <SubAdministrativeAreaName>Santa Clara</SubAdministrativeAreaName> 
      <Locality> 
       <LocalityName>Mountain View</LocalityName> 
       <Thoroughfare> 
       <ThoroughfareName>1600 Amphitheatre Pkwy</ThoroughfareName> 
       </Thoroughfare> 
       <PostalCode> 
       <PostalCodeNumber>94043</PostalCodeNumber> 
       </PostalCode> 
      </Locality> 
      </SubAdministrativeArea> 
     </AdministrativeArea> 
     </Country> 
    </AddressDetails> 
    <Point> 
     <coordinates>-122.083739,37.423021,0</coordinates> 
    </Point> 
    </Placemark> 
    </Response> 
</kml> 
+0

इसके अतिरिक्त, आप एक ही डेटा प्राप्त करने के लिए JSON या XML प्रतिक्रिया प्रकार का उपयोग कर सकते हैं। –

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