Get country from coordinates?

后端 未结 4 1746
面向向阳花
面向向阳花 2020-12-08 03:15

How to get country name in Android, If are known geo coordinates? How to make it the simplest way?

相关标签:
4条回答
  • 2020-12-08 03:22

    Use Below Function for that.

    public void getAddress(double lat, double lng) {
        Geocoder geocoder = new Geocoder(HomeActivity.mContext, Locale.getDefault());
        try {
            List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);
            Address obj = addresses.get(0);
            String add = obj.getAddressLine(0);
            GUIStatics.currentAddress = obj.getSubAdminArea() + ","
                    + obj.getAdminArea();
            GUIStatics.latitude = obj.getLatitude();
            GUIStatics.longitude = obj.getLongitude();
            GUIStatics.currentCity= obj.getSubAdminArea();
            GUIStatics.currentState= obj.getAdminArea();
            add = add + "\n" + obj.getCountryName();
            add = add + "\n" + obj.getCountryCode();
            add = add + "\n" + obj.getAdminArea();
            add = add + "\n" + obj.getPostalCode();
            add = add + "\n" + obj.getSubAdminArea();
            add = add + "\n" + obj.getLocality();
            add = add + "\n" + obj.getSubThoroughfare();
    
            Log.v("IGA", "Address" + add);
            // Toast.makeText(this, "Address=>" + add,
            // Toast.LENGTH_SHORT).show();
    
            // TennisAppActivity.showDialog(add);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }
    

    Add Below Permission to your manifest

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    
    0 讨论(0)
  • 2020-12-08 03:23

    Here you go

    Geocoder gcd = new Geocoder(context, Locale.getDefault());
    List<Address> addresses = gcd.getFromLocation(lat, lng, 1);
    
        if (addresses.size() > 0)
         {  
           String countryName=addresses.get(0).getCountryName();
         }
    
    0 讨论(0)
  • 2020-12-08 03:23

    How I did it recently was to read the data from the Web API URL and parse the JSON.

    An example URL for the point(40.714224, -73.961452) is:

    http://maps.google.com/maps/geo?q=40.714224,-73.961452&output=json&oe=utf8&sensor=true_or_false&key=your_api_key
    

    Which produces the following output:

    {
      "name": "40.714224,-73.961452",
      "Status": {
        "code": 200,
        "request": "geocode"
      },
      "Placemark": [ {
        "id": "p1",
        "address": "285 Bedford Ave, Brooklyn, NY 11211, USA",
        "AddressDetails": {
       "Accuracy" : 8,
       "Country" : {
          "AdministrativeArea" : {
             "AdministrativeAreaName" : "NY",
             "SubAdministrativeArea" : {
                "Locality" : {
                   "DependentLocality" : {
                      "DependentLocalityName" : "Williamsburg",
                      "PostalCode" : {
                         "PostalCodeNumber" : "11211"
                      },
                      "Thoroughfare" : {
                         "ThoroughfareName" : "285 Bedford Ave"
                      }
                   },
                   "LocalityName" : "Brooklyn"
                },
                "SubAdministrativeAreaName" : "Kings"
             }
          },
          "CountryName" : "USA",
          "CountryNameCode" : "US"
       }
    },
        "ExtendedData": {
          "LatLonBox": {
            "north": 40.7154779,
            "south": 40.7127799,
            "east": -73.9600584,
            "west": -73.9627564
          }
        },
        "Point": {
          "coordinates": [ -73.9614074, 40.7141289, 0 ]
        }
      } ]
    }
    

    I find GSON to be quite good for parsing JSON in Android.

    0 讨论(0)
  • 2020-12-08 03:40

    use this

    try {
            Geocoder geo = new Geocoder(this.getApplicationContext(), Locale.getDefault());
            List<Address> addresses = geo.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
            if (addresses.isEmpty()) {
                placeName.setText("Waiting for Location");
            }
            else {
                if (addresses.size() > 0) {
                    placeName.setText(addresses.get(0).getFeatureName() + ", " + addresses.get(0).getLocality() +", " + addresses.get(0).getAdminArea() + ", " + addresses.get(0).getCountryName());
                }
            }
        }
        catch(Exception e){
            Toast.makeText(this, "No Location Name Found", 600).show();
        }
    

    use this in manifest file

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    
    0 讨论(0)
提交回复
热议问题