根据城市,邮编或街道名称获取纬度和经度

时间:2011-01-21 05:12:28

标签: java android android-emulator android-widget

在我目前的Android应用程序中,我想根据输入的城市名称,街道名称或邮政编码获取坐标。我怎么能做到这一点?

最诚挚的问候, 罗尼

4 个答案:

答案 0 :(得分:6)

查看方法Geocoder.getFromLocationName(cityName, maxResults)

像这样使用:

List<Address> addressList = geoCoder.getFromLocationName(cityName, 1);
Address address = addressList.get(0);
if(address.hasLatitude() && address.hasLongitude()){
    double selectedLat = address.getLatitude();
    double selectedLng = address.getLongitude();
}

答案 1 :(得分:5)

您可以尝试使用以下代码从指定地址获取Geocode点。

List<Address> foundGeocode = null;
/* find the addresses  by using getFromLocationName() method with the given address*/
foundGeocode = new Geocoder(this).getFromLocationName("address here", 1);
 foundGeocode.get(0).getLatitude(); //getting latitude
 foundGeocode.get(0).getLongitude();//getting longitude

答案 2 :(得分:1)

  

您好,

     

有一个非常好的网站叫做   拥有数据的世界地名录   需要,在一个整洁,可下载的文件(由   城市名称)

     

http://www.world-gazetteer.com/home.htm

     

在主页面上,点击链接   那说:

     

其他统计.....各种   统计:表格,地图和   可下载的数据

     

然后从出现的页面中单击   在链接上说:

     

popdata(1.4 MB)

     

解压缩文件,你明白了!

     

数据库是免费的master数据库   世界城市包括   纬度,经度和人口   数据...等

来自:http://answers.google.com/answers/threadview?id=432778

答案 3 :(得分:0)

试试这个。

Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
try {
    List<Address> addresses = geoCoder.getFromLocation(latitude , longitude, 1);

    String strCompleteAddress= "";
    //if (addresses.size() > 0)
    //{
        for (int i=0; i<addresses.get(0).getMaxAddressLineIndex();i++)
            strCompleteAddress+= addresses.get(0).getAddressLine(i) + "\n";
    // }
    Log.i("MyLocTAG => ", strCompleteAddress);
    Toast.makeText(getBaseContext(), strCompleteAddress, Toast.LENGTH_LONG).show();
}
catch (IOException e) {
    Log.i("MyLocTAG => ", "this is the exception part");
    e.printStackTrace();
}