Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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
Android 如何从经纬度获取村庄、地区和街道_Android_Google Maps_Geolocation_Location - Fatal编程技术网

Android 如何从经纬度获取村庄、地区和街道

Android 如何从经纬度获取村庄、地区和街道,android,google-maps,geolocation,location,Android,Google Maps,Geolocation,Location,我有纬度和经度坐标,我想从中得到村庄名称,地区和分区。我搜索并找到了没有给出村庄名称的反向地理编码。 是否有任何api或代码库可用于从lat long获取准确位置。我想在我的android应用程序中展示这一点 Geocoder geocoder = new Geocoder(this, Locale.getDefault()); String result = null; try { List<Address> addressL

我有纬度和经度坐标,我想从中得到村庄名称,地区和分区。我搜索并找到了没有给出村庄名称的反向地理编码。 是否有任何api或代码库可用于从lat long获取准确位置。我想在我的android应用程序中展示这一点

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
        String result = null;
        try {
            List<Address> addressList = geocoder.getFromLocation(
                    25.882456,83.174279, 1);
            if (addressList != null && addressList.size() > 0) {
                Address address = addressList.get(0);
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
                    sb.append(address.getAddressLine(i)).append("\n");//adress
                }
                sb.append(address.getLocality()).append("\n");//village

                sb.append(address.getPostalCode()).append("\n");
                sb.append(address.getCountryName());
                sb.append(address.getAdminArea()).append("\n"); //state

                sb.append(address.getSubAdminArea()).append("\n");//district


                result = sb.toString();
            }
        } catch (IOException e) {
           // Log.e(TAG, "Unable connect to Geocoder", e);
        }
Geocoder-Geocoder=new-Geocoder(这个,Locale.getDefault());
字符串结果=null;
试一试{
List addressList=geocoder.getFromLocation(
25.882456,83.174279, 1);
if(addressList!=null&&addressList.size()>0){
地址=地址列表。获取(0);
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
我更改了您的代码,它正在工作

import java.io.IOException;
import java.util.List;
import java.util.Locale;

import android.app.AlertDialog;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.widget.Toast;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

public class MainActivity extends FragmentActivity {
    private GoogleMap mMap;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setUpMapIfNeeded();
    }

    @Override
    protected void onResume() {
        super.onResume();
        setUpMapIfNeeded();
    }

    private void setUpMapIfNeeded() {
        if (mMap != null) {
            return;
        }
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
        if (mMap == null) {
            return;
        }
        // Initialize map options. For example:
        // mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);

        final LatLng INDIA = new LatLng(28.5192, 77.2130);

      //  String address=getAddress(this, 28.5192, 77.2130);
        Marker melbourne = mMap.addMarker(new MarkerOptions()
                                  .position(INDIA)
                                  .title("Saket")
                                  .snippet("Population: 4,137,400"));
       // String address=getAddress(this,28.6700, 77.4200);

        Geocoder geocoder = new Geocoder(this, Locale.getDefault());
        String result = null;
        try {
            List<Address> addressList = geocoder.getFromLocation(
                    25.882456,83.174279, 1);
            if (addressList != null && addressList.size() > 0) {
                Address address = addressList.get(0);
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
                    sb.append(address.getAddressLine(i)).append("\n");//adress
                }
                sb.append(address.getLocality()).append("\n");//village

                sb.append(address.getPostalCode()).append("\n");
                sb.append(address.getCountryName());
                sb.append(address.getAdminArea()).append("\n"); //state

                sb.append(address.getSubAdminArea()).append("\n");//district

               sb.append(address.getSubLocality()).append("\n");

                result = sb.toString();
            }
        } catch (IOException e) {
           // Log.e(TAG, "Unable connect to Geocoder", e);
        }
        new AlertDialog.Builder(this).setMessage(result).create().show();

        Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
        final LatLng Ghaziabad = new LatLng(24.1860076, 75.1432231);
        Marker ghaziabad = mMap.addMarker(new MarkerOptions()
                                  .position(Ghaziabad)
                                  .title(result)
                                  .snippet("Population: 4,137,400")
                                  .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher)));


    }
import java.io.IOException;
导入java.util.List;
导入java.util.Locale;
导入android.app.AlertDialog;
导入android.content.Context;
导入android.location.Address;
导入android.location.Geocoder;
导入android.os.Bundle;
导入android.support.v4.app.FragmentActivity;
导入android.util.Log;
导入android.widget.Toast;
导入com.google.android.gms.maps.GoogleMap;
导入com.google.android.gms.maps.SupportMapFragment;
导入com.google.android.gms.maps.model.BitmapDescriptorFactory;
导入com.google.android.gms.maps.model.LatLng;
导入com.google.android.gms.maps.model.Marker;
导入com.google.android.gms.maps.model.MarkerOptions;
公共类MainActivity扩展了FragmentActivity{
私有谷歌地图;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setupmapifneed();
}
@凌驾
受保护的void onResume(){
super.onResume();
setupmapifneed();
}
私有void setUpMapIfNeeded(){
如果(mMap!=null){
返回;
}
mMap=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
如果(mMap==null){
返回;
}
//初始化映射选项。例如:
//mMap.setMapType(GoogleMap.MAP\u TYPE\u HYBRID);
最终LatLng INDIA=新LatLng(28.5192,77.2130);
//字符串地址=getAddress(this,28.5192,77.2130);
Marker melbourne=mMap.addMarker(新MarkerOptions()
.职位(印度)
.名称(“Saket”)
.snippet(“人口:4137400”);
//字符串地址=getAddress(this,28.6700,77.4200);
Geocoder Geocoder=新的Geocoder(这个,Locale.getDefault());
字符串结果=null;
试一试{
List addressList=geocoder.getFromLocation(
25.882456,83.174279, 1);
if(addressList!=null&&addressList.size()>0){
地址=地址列表。获取(0);
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
请显示您的代码,并说明在哪种情况下它不起作用。您能告诉我们“结果”是什么吗?我从未使用过,但在API中,我看到它以JSON格式返回信息,您会在意吗?