get latitude and longitude from city name

匿名 (未验证) 提交于 2019-12-03 01:28:01

问题:

In my current android application, I would like to get the geocordinates based on an entered city name, street name or zip code. How can I accomplish this?

Best Regards

回答1:

get geo co-ordinates via net

private static JSONObject getLocationInfo(String address) {      StringBuilder stringBuilder = new StringBuilder();     try {      address = address.replaceAll(" ","%20");          HttpPost httppost = new HttpPost("http://maps.google.com/maps/api/geocode/json?address=" + address + "&sensor=false");     HttpClient client = new DefaultHttpClient();     HttpResponse response;     stringBuilder = new StringBuilder();           response = client.execute(httppost);         HttpEntity entity = response.getEntity();         InputStream stream = entity.getContent();         int b;         while ((b = stream.read()) != -1) {             stringBuilder.append((char) b);         }     } catch (ClientProtocolException e) {         Log.i("getLocationInfo ClientProtocolException", e.toString());     } catch (IOException e) {          Log.i("getLocationInfo IOException", e.toString());     }       JSONObject jsonObject = new JSONObject();     try {         jsonObject = new JSONObject(stringBuilder.toString());     } catch (JSONException e) {         // TODO Auto-generated catch block         Log.i("getLocationInfo JSONException", e.toString());     }      return jsonObject; }  private static boolean getLatLong(JSONObject jsonObject)  {      try {         longitute = ((JSONArray)jsonObject.get("results")).getJSONObject(0).getJSONObject("geometry").getJSONObject("location").getDouble("lng");         Log.i("Log1", longitute1+"");     latitude = ((JSONArray)jsonObject.get("results")).getJSONObject(0)             .getJSONObject("geometry").getJSONObject("location")             .getDouble("lat");         Log.i("lat1", latitude1+"");     } catch (JSONException e) {          longitute=0;         latitude = 0;         Log.i("getLatLong", e.toString());         return false;      }      return true; } 


回答2:

searchedAddress --> Can be (city name/address/Zipcode).

public boolean getLatitudeAndLongitudeFromGoogleMapForAddress(String searchedAddress){      Geocoder coder = new Geocoder(IPlant.iPlantActivity);     List
address; try { address = coder.getFromLocationName(searchedAddress,5); if (address == null) { Log.d(TAG, "############Address not correct #########"); } Address location = address.get(0); Log.d(TAG, "Address Latitude : "+ location.getLatitude();+ "Address Longitude : "+ location.getLongitude()); return true; } catch(Exception e) { Log.d(TAG, "MY_ERROR : ############Address Not Found"); return false; } }


回答3:

Use Geocoder class. It's not difficult to use, and then you can use getFromLocationName, which does what you want. You can also use this class the other way round, it's to say, entering (lat, lon) and getting the address located there.

I assume you want to do it through Android code, if you want to use Javascript, then you should use Google map's API, as pointed in another answer.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!