get latitude and longitude from city name

后端 未结 3 1260
面向向阳花
面向向阳花 2020-12-16 07:07

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 Rega

相关标签:
3条回答
  • 2020-12-16 07:46

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

    public boolean getLatitudeAndLongitudeFromGoogleMapForAddress(String searchedAddress){
    
        Geocoder coder = new Geocoder(IPlant.iPlantActivity);
        List<Address> 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;
        }
    }
    
    0 讨论(0)
  • 2020-12-16 07:50

    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;
    }
    
    0 讨论(0)
  • 2020-12-16 08:02

    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.

    0 讨论(0)
提交回复
热议问题