2011-12-28 17 views
14

मैं वर्तमान शहर को Address.getLocality() विधि के साथ प्राप्त करने के लिए एंड्रॉइड जियोकोडिंग का उपयोग कर रहा हूं। यह ठीक काम करता है, हाल ही में जब तक यह अक्सर इलाके के लिए शून्य वापस नहीं आता है।एंड्रॉइड रिवर्स जियोकोडिंग getLocality अक्सर शून्य

try { 
     Geocoder c = new Geocoder(this, Locale.getDefault()); 
     double lat = 51.481; 
     double lon = 0.0; 
     List<Address> l = c.getFromLocation(lat, lon, 5); 
     for (Address a: l) { 
      Log.i("GeocoderTest", "Locality " + a.getLocality() + " (" + a + ")"); 
     } 
    } catch (IOException e) { 
     Log.e("GeocoderTest", "", e); 
    } 

यह अब पहले लौट आए पते के लिए निम्न संदेश लॉग: यहाँ एक उदाहरण है

इलाका अशक्त (पता [addressLines = [0: "14-18 पार्क विस्टा", 1: "लंदन बोर ऑफ ग्रीनविच, लंदन एसई 10", 2: "यूके"], सुविधा =, व्यवस्थापक = शून्य, उप-व्यवस्थापक = शून्य, इलाके = शून्य, पूर्णांक = पार्क Vista, postalCode = null, countryCode = GB, देशनाम = यूनाइटेड साम्राज्य, hasLatitude = true, अक्षांश = 51.4819069 है, लम्बाई = सत्य, देशांतर = -6.327 ई -4, फोन = शून्य, यूआरएल = शून्य, अतिरिक्त = शून्य])

कुछ स्थान शहर में इलाके में वापस आते हैं, जबकि इसके आगे एक स्थान नहीं है।

तो यह ठीक पहले काम करता था, वास्तव में मैंने पहले एक शून्य इलाके नहीं देखा था। तो मुझे लगता है कि Google की geocoding सेवा में कुछ बदलना चाहिए। कोई विचार क्या हो रहा है, और क्या यह स्थिति स्थायी है? यदि हां, तो किसी स्थान से शहर का निर्धारण करने का सबसे अच्छा तरीका क्या होगा?

उत्तर

4

अब मैं कनाडा, ओंटारियो, हैमिल्टन में रहते हैं (हैमिल्टन मेरे शहर है, ओंटारियो प्रांत है)

मैंने देखा है कि getLocality() रिटर्न शून्य, और getAdminArea() रिटर्न ओंटारियो, और getSubLocality() रिटर्न हैमिल्टन। ch

4

मैंने देखा, अक्सर अक्सर लॉकल्टी() जियोकोडर द्वारा लौटाए गए सूची में पहले पते के लिए शून्य देता है।
दूसरी तरफ सही शहर का नाम अगले पते की लोकैलिटी पर रहता है।
तो मैं इस समाधान का उपयोग कर रहा हूँ और यह बड़े शहरों के लिए अच्छी तरह से काम करता है:

private String getCityNameByCoordinates(double lat, double lon) throws IOException { 
    List<Address> addresses = mGeocoder.getFromLocation(lat, lon, 10); 
    if (addresses != null && addresses.size() > 0) { 
     for (Address adr : addresses) { 
      if (adr.getLocality() != null && adr.getLocality().length() > 0) { 
       return adr.getLocality(); 
      } 
     } 
    } 
    return null; 
} 
+1

टुकड़ा के लिए धन्यवाद। यह शून्य मूल्य होने से बेहतर है :) – Alex