2012-10-01 5 views
9

Ich habe den untenstehenden Code, um lat, lang zu lesbaren Adresse zu konvertieren. Jetzt bekomme ich alle Details einschließlich Straßennamen. Wie kann ich nur Stadt, Staat, Land bekommen? Ich will nichts mehr Details. Bitte hilf mir.Wie bekomme ich nur Stadt, Staat, Land von lat, long in android

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

Antwort

10

Die Detailgenauigkeit in einer umgekehrten geokodierten Standortbeschreibung kann variieren, z. B. kann die vollständige Adresse des nächstgelegenen Gebäudes enthalten sein, während eine andere nur einen Städtenamen und eine Postleitzahl enthalten kann. Dies wird den Namen der Stadt und Land Name Rückkehr

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

Einzelheiten Sie in das Address Objekt aussehen kann

+5

Sehr interessant ist, dass die Lokalität oft Null ist. Zum Beispiel bin ich derzeit in der tschechischen Hauptstadt Prag. Lokalität ist null und die Stadt befindet sich tatsächlich im "sub-admin" Teil der Geolocation. Die Adresse selbst ist korrekt. Wenn Sie also internationale Apps erstellen, sollten Sie sehr genau wissen, dass Geocoderinformationen und Zuverlässigkeit nicht wirklich vertrauenswürdig sind. – John

+0

Das war ein toller Fund für mich. Guter Punkt @John, ich denke, wir sollten addresses.get (0) .getSubAdminArea() in diesem Fall in eine bedingte Anweisung eingewickelt verwenden, um festzustellen, ob die Lokalität null ist. Könnte sein? Ich bin selbst noch neu dazu;) –

+0

Also kein Staat in Address verfügbar? –

2

Werfen Sie einen Blick auf Address (javadoc), die von dem Geocoder zurückgeführt wird. Dies hat verschiedene Methoden wie getLocality() die Stadt org zurückzukehren getCountry() die Ländernamen usw.

1

Verwenden Sie die folgenden Methoden für die Objekte von Adressen zurückzukehren:

getLocality() 
getCountryName() 

Ich bin nicht sicher, wie den Zustand zu erhalten obwohl.

+0

Seien Sie vorsichtig, in einigen Fällen kann getLocality() null sein und Sie erhalten eine Nullzeiger-Ausnahme, wenn Sie den Ländernamen erhalten. – Abk

20

Verwenden Sie die folgenden Methoden für die Objekte von Adressen:

getLocality()

getCountryName()

Verwenden Sie

getAdminArea() in den Status zurückkehren.

Ich weiß nicht, wie genau das für andere Länder ist, aber für Adressen in den USA gibt dies den richtigen Namen zurück.

P.S. Tut mir leid, dass ich eine ganze separate Antwort geschrieben habe, ich kann noch keine Kommentare abgeben.

+1

getAdminArea() wird nicht funktionieren .. es gibt Null für Frankreich –

+0

getAdminArea() wird übersehen, es scheint. Es hilft nicht, dass sich "Staat" in der Programmierung nicht auf ein bestimmtes Stück Land bezieht. – Airborne

0

Fügen Sie diese Ländercode-Liste in Ihre Zeichenkette ein.

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

Dann nach Standort ändern Methode mit unten Code.

Verwandte Themen