2012-10-01 11 views
9

मेरे पास लैट को परिवर्तित करने के लिए नीचे दिया गया कोड है, लंबे समय तक मानव पठनीय पता। अब मुझे सड़क के नाम सहित पूरा विवरण मिल रहा है। मैं केवल शहर, राज्य, देश कैसे प्राप्त कर सकता हूं? मुझे कुछ और विवरण नहीं चाहिए। क्रिप्या मेरि सहायता करे।केवल शहर, राज्य, लेट से देश, एंड्रॉइड में लंबे समय तक

Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault()); 
try { 
    List<Address> addresses = geoCoder.getFromLocation(latitude, longitude, 1); 

    String add = ""; 
    if (addresses.size() > 0) 
    { 
     for (int i=0; i<addresses.get(0).getMaxAddressLineIndex();i++) 
    add += addresses.get(0).getAddressLine(i) + "\n"; 
    } 

    showToastMessage(add); 
} 
catch (IOException e1) {     
    e1.printStackTrace(); 
} 

उत्तर

10

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

if (addresses.size() > 0) { 
     System.out.println(addresses.get(0).getLocality()); 
     System.out.println(addresses.get(0).getCountryName()); 
    } 

वापस आ जाएगी विवरण आप Address वस्तु पर गौर कर सकते के लिए

+5

काफी दिलचस्प बात यह है कि इलाका अक्सर शून्य है। उदाहरण के लिए मैं वर्तमान में चेक राजधानी, प्राग में हूं। इलाके शून्य है और शहर वास्तव में भौगोलिक स्थान के "उप-व्यवस्थापक" भाग में है। पता स्वयं सही है। इसलिए यदि आप अंतर्राष्ट्रीय ऐप्स बनाते हैं तो आपको बहुत अवगत होना चाहिए कि भूगर्भ संबंधी जानकारी और विश्वसनीयता वास्तव में भरोसा नहीं किया जा सकता है। – John

+0

यह मेरे लिए एक अच्छा खोज था। अच्छा बिंदु @ जॉन, मुझे लगता है कि हमें पते.get (0) .getSubAdminArea() का उपयोग उस स्थिति में एक सशर्त बयान में लपेटा जाना चाहिए ताकि यह पता चल सके कि इलाके शून्य है या नहीं। शायद? मैं अभी भी इसके लिए नया हूं;) –

+0

तो पता कोई राज्य में उपलब्ध नहीं है? –

2

Address (javadoc) पर एक नज़र जो जियोकोडर से लौटे है। यह getLocality() की तरह अलग तरीकों शहर ऑर्ग getCountry() वापस जाने के लिए देश का नाम आदि

1

के पतों का उपयोग से वस्तुओं पर निम्न विधियों में वापस जाने के लिए है:

getLocality() 
getCountryName() 

मुझे यकीन है कि कैसे राज्य पाने के लिए नहीं कर रहा हूँ हालांकि।

+0

सावधान रहें, कुछ कलाकारों में प्राप्त करें लोकता() शायद शून्य हो और देश का नाम प्राप्त करने पर आपको शून्य सूचक अपवाद मिलेगा। – Abk

20

के पतों का उपयोग से वस्तुओं पर निम्न विधियों:

getLocality()

getCountryName()

01 का उपयोग करें राज्य को वापस करने के लिए

getAdminArea()

मुझे नहीं पता कि यह अन्य देशों के लिए कितना सटीक है लेकिन संयुक्त राज्य अमेरिका में पते के लिए, यह सही राज्य का नाम देता है।

पीएस एक अलग अलग जवाब लिखने के लिए खेद है, मैं अभी तक टिप्पणी करने में सक्षम नहीं हूं।

+1

getAdminArea() काम नहीं करेगा .. यह फ़्रांस –

+0

getAdminArea() को अनदेखा करता है ऐसा लगता है। यह मदद नहीं करता है कि "राज्य" प्रोग्रामिंग में भूमि के वास्तविक टुकड़े का संदर्भ नहीं देता है। – Airborne

0

अपनी स्ट्रिंग फ़ाइल में देश कोड की इस सूची को जोड़ें।

<string-array name="CountryCodes"> 
     <item>93,AF</item> 
     <item>355,AL</item> 
     <item>213,DZ</item> 
     <item>376,AD</item> 
     <item>244,AO</item> 
     <item>672,AQ</item> 
     <item>54,AR</item> 
     <item>374,AM</item> 
     <item>297,AW</item> 
     <item>61,AU</item> 
     <item>43,AT</item> 
     <item>994,AZ</item> 
     <item>973,BH</item> 
     <item>880,BD</item> 
     <item>375,BY</item> 
     <item>32,BE</item> 
     <item>501,BZ</item> 
     <item>229,BJ</item> 
     <item>975,BT</item> 
     <item>591,BO</item> 
     <item>387,BA</item> 
     <item>267,BW</item> 
     <item>55,BR</item> 
     <item>673,BN</item> 
     <item>359,BG</item> 
     <item>226,BF</item> 
     <item>95,MM</item> 
     <item>257,BI</item> 
     <item>855,KH</item> 
     <item>237,CM</item> 
     <item>1,CA</item> 
     <item>238,CV</item> 
     <item>236,CF</item> 
     <item>235,TD</item> 
     <item>56,CL</item> 
     <item>86,CN</item> 
     <item>61,CX</item> 
     <item>61,CC</item> 
     <item>57,CO</item> 
     <item>269,KM</item> 
     <item>242,CG</item> 
     <item>243,CD</item> 
     <item>682,CK</item> 
     <item>506,CR</item> 
     <item>385,HR</item> 
     <item>53,CU</item> 
     <item>357,CY</item> 
     <item>420,CZ</item> 
     <item>45,DK</item> 
     <item>253,DJ</item> 
     <item>670,TL</item> 
     <item>593,EC</item> 
     <item>20,EG</item> 
     <item>503,SV</item> 
     <item>240,GQ</item> 
     <item>291,ER</item> 
     <item>372,EE</item> 
     <item>251,ET</item> 
     <item>500,FK</item> 
     <item>298,FO</item> 
     <item>679,FJ</item> 
     <item>358,FI</item> 
     <item>33,FR</item> 
     <item>689,PF</item> 
     <item>241,GA</item> 
     <item>220,GM</item> 
     <item>995,GE</item> 
     <item>49,DE</item> 
     <item>233,GH</item> 
     <item>350,GI</item> 
     <item>30,GR</item> 
     <item>299,GL</item> 
     <item>502,GT</item> 
     <item>224,GN</item> 
     <item>245,GW</item> 
     <item>592,GY</item> 
     <item>509,HT</item> 
     <item>504,HN</item> 
     <item>852,HK</item> 
     <item>36,HU</item> 
     <item>91,IN</item> 
     <item>62,ID</item> 
     <item>98,IR</item> 
     <item>964,IQ</item> 
     <item>353,IE</item> 
     <item>44,IM</item> 
     <item>972,IL</item> 
     <item>39,IT</item> 
     <item>225,CI</item> 
     <item>81,JP</item> 
     <item>962,JO</item> 
     <item>7,KZ</item> 
     <item>254,KE</item> 
     <item>686,KI</item> 
     <item>965,KW</item> 
     <item>996,KG</item> 
     <item>856,LA</item> 
     <item>371,LV</item> 
     <item>961,LB</item> 
     <item>266,LS</item> 
     <item>231,LR</item> 
     <item>218,LY</item> 
     <item>423,LI</item> 
     <item>370,LT</item> 
     <item>352,LU</item> 
     <item>853,MO</item> 
     <item>389,MK</item> 
     <item>261,MG</item> 
     <item>265,MW</item> 
     <item>60,MY</item> 
     <item>960,MV</item> 
     <item>223,ML</item> 
     <item>356,MT</item> 
     <item>692,MH</item> 
     <item>222,MR</item> 
     <item>230,MU</item> 
     <item>262,YT</item> 
     <item>52,MX</item> 
     <item>691,FM</item> 
     <item>373,MD</item> 
     <item>377,MC</item> 
     <item>976,MN</item> 
     <item>382,ME</item> 
     <item>212,MA</item> 
     <item>258,MZ</item> 
     <item>264,NA</item> 
     <item>674,NR</item> 
     <item>977,NP</item> 
     <item>31,NL</item> 
     <item>599,AN</item> 
     <item>687,NC</item> 
     <item>64,NZ</item> 
     <item>505,NI</item> 
     <item>227,NE</item> 
     <item>234,NG</item> 
     <item>683,NU</item> 
     <item>850,KP</item> 
     <item>47,NO</item> 
     <item>968,OM</item> 
     <item>92,PK</item> 
     <item>680,PW</item> 
     <item>507,PA</item> 
     <item>675,PG</item> 
     <item>595,PY</item> 
     <item>51,PE</item> 
     <item>63,PH</item> 
     <item>870,PN</item> 
     <item>48,PL</item> 
     <item>351,PT</item> 
     <item>1,PR</item> 
     <item>974,QA</item> 
     <item>40,RO</item> 
     <item>7,RU</item> 
     <item>250,RW</item> 
     <item>590,BL</item> 
     <item>685,WS</item> 
     <item>378,SM</item> 
     <item>239,ST</item> 
     <item>966,SA</item> 
     <item>221,SN</item> 
     <item>381,RS</item> 
     <item>248,SC</item> 
     <item>232,SL</item> 
     <item>65,SG</item> 
     <item>421,SK</item> 
     <item>386,SI</item> 
     <item>677,SB</item> 
     <item>252,SO</item> 
     <item>27,ZA</item> 
     <item>82,KR</item> 
     <item>34,ES</item> 
     <item>94,LK</item> 
     <item>290,SH</item> 
     <item>508,PM</item> 
     <item>249,SD</item> 
     <item>597,SR</item> 
     <item>268,SZ</item> 
     <item>46,SE</item> 
     <item>41,CH</item> 
     <item>963,SY</item> 
     <item>886,TW</item> 
     <item>992,TJ</item> 
     <item>255,TZ</item> 
     <item>66,TH</item> 
     <item>228,TG</item> 
     <item>690,TK</item> 
     <item>676,TO</item> 
     <item>216,TN</item> 
     <item>90,TR</item> 
     <item>993,TM</item> 
     <item>688,TV</item> 
     <item>971,AE</item> 
     <item>256,UG</item> 
     <item>44,GB</item> 
     <item>380,UA</item> 
     <item>598,UY</item> 
     <item>1,US</item> 
     <item>998,UZ</item> 
     <item>678,VU</item> 
     <item>39,VA</item> 
     <item>58,VE</item> 
     <item>84,VN</item> 
     <item>681,WF</item> 
     <item>967,YE</item> 
     <item>260,ZM</item> 
     <item>263,ZW</item> 
    </string-array> 

फिर नीचे कोड के साथ स्थान परिवर्तन विधि जोड़ने के बाद।

@Override 
    public void onLocationChanged(Location location) { 
     super.onLocationChanged(location); 
     try { 
      Geocoder gcd = new Geocoder(context, Locale.getDefault()); 
      List<Address> addresses = gcd.getFromLocation(location.getLatitude(), 
        location.getLongitude(), 1); 

      if (addresses.size() > 0) { 
       String countryName = addresses.get(0).getCountryCode(); 
       LogUtils.LOGE("TAG_DATA", getCountryZipCode(countryName), Const.LOG_VISIBILITY); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    public String getCountryZipCode(String country) { 
     String CountryZipCode = ""; 

     String[] rl = this.getResources().getStringArray(R.array.CountryCodes); 
     for (String aRl : rl) { 
      String[] g = aRl.split(","); 
      if (g[1].trim().equals(country)) { 
       CountryZipCode = "+" + g[0]; 
       break; 
      } 
     } 
     return CountryZipCode; 
    } 
संबंधित मुद्दे