Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从谷歌地图的坐标中获取地址_Java_Android_Google Maps_Google Api - Fatal编程技术网

Java 从谷歌地图的坐标中获取地址

Java 从谷歌地图的坐标中获取地址,java,android,google-maps,google-api,Java,Android,Google Maps,Google Api,我正在尝试一个位置应用程序,目前我在标记上有该位置的坐标。现在,我如何从已经存在的坐标中获得位置的名称 我的代码: //search add address private void geoLocate() { Log.d( TAG, "geoLocate: geolocating" ); String searchString = mSearchText.getText().toString(); Geocoder geocoder = new Geocoder( M

我正在尝试一个位置应用程序,目前我在标记上有该位置的坐标。现在,我如何从已经存在的坐标中获得位置的名称

我的代码:

//search add address
private void geoLocate() {
    Log.d( TAG, "geoLocate: geolocating" );
    String searchString = mSearchText.getText().toString();

    Geocoder geocoder = new Geocoder( MapActivity.this );

    List<Address> list = new ArrayList<>();

    try {
        list = geocoder.getFromLocationName( searchString, 1 );
    } catch (IOException e) {
        Log.e( TAG, "geoLocate: IOException" + e.getMessage() );
    }

    if (list.size() > 0) {
        Address address = list.get( 0 );
        Log.d( TAG, "geoLocate: found a location:  " + address.toString() );
        moveCamera( new LatLng( address.getLatitude(), address.getLongitude() ), DEFAULT_ZOOM,address.getAddressLine( 0 ) );
    }
}

您可以使用下面的代码获取基于latlong的地址

try {
        Geocoder geocoder;
        String city=null;
        List<Address> yourAddresses;
        geocoder = new Geocoder(this, Locale.getDefault());
        yourAddresses = geocoder.getFromLocation(yourLatitude, yourLongitude, 1);


    final String yourAddress = yourAddresses.get(0).getAddressLine(0);
    if (yourAddresses != null && yourAddresses.size() > 0) {
        android.location.Address address = yourAddresses.get(0);
        @SuppressWarnings("MismatchedQueryAndUpdateOfStringBuilder") StringBuilder sb = new StringBuilder();
        for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
            sb.append(address.getAddressLine(i)).append("\n");
        }
        city = address.getLocality();
        Log.d("city", "onCreate: "+city);
    }

    } catch (IOException e) {
        e.printStackTrace();
    }
试试看{
地理编码器;
字符串city=null;
列出你的地址;
geocoder=新的geocoder(这个,Locale.getDefault());
yourAddresses=geocoder.getFromLocation(yourLatitude,yourLatitude,1);
最后一个字符串yourAddress=yourAddresses.get(0).getAddressLine(0);
if(yourAddresses!=null&&yourAddresses.size()>0){
android.location.Address=yourAddresses.get(0);
@SuppressWarnings(“不匹配的QueryAndUpdateOfStringBuilder”)StringBuilder sb=new StringBuilder();
对于(int i=0;i
可能重复:您根据自己的代码提出了一个相反的问题。您想做的事情可能重复。你能解释清楚吗?例如:我有一个坐标:40.657052:73.990700 convert->>=纽约布鲁克林
try {
        Geocoder geocoder;
        String city=null;
        List<Address> yourAddresses;
        geocoder = new Geocoder(this, Locale.getDefault());
        yourAddresses = geocoder.getFromLocation(yourLatitude, yourLongitude, 1);


    final String yourAddress = yourAddresses.get(0).getAddressLine(0);
    if (yourAddresses != null && yourAddresses.size() > 0) {
        android.location.Address address = yourAddresses.get(0);
        @SuppressWarnings("MismatchedQueryAndUpdateOfStringBuilder") StringBuilder sb = new StringBuilder();
        for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
            sb.append(address.getAddressLine(i)).append("\n");
        }
        city = address.getLocality();
        Log.d("city", "onCreate: "+city);
    }

    } catch (IOException e) {
        e.printStackTrace();
    }