使用邮编获取纬度和经度

23

我想在 Android 应用中通过邮政编码获取纬度和经度。

4个回答

26

假设地理编码服务存在,这是一个更简单的解决方案:

final Geocoder geocoder = new Geocoder(this);
final String zip = "90210";
try {
  List<Address> addresses = geocoder.getFromLocationName(zipCode, 1);
  if (addresses != null && !addresses.isEmpty()) {
    Address address = addresses.get(0);
    // Use the address as needed
    String message = String.format("Latitude: %f, Longitude: %f", 
    address.getLatitude(), address.getLongitude());
    Toast.makeText(this, message, Toast.LENGTH_LONG).show();
  } else {
    // Display appropriate message when Geocoder services are not available
    Toast.makeToast(this, "Unable to geocode zipcode", Toast.LENGTH_LONG).show(); 
  }
} catch (IOException e) {
  // handle exception
}

不起作用。出现“服务不可用”异常。你有更好的方法吗? - YuDroid
除了这里提到的“90210”邮政编码(无法找到该邮编的位置),此解决方案适用于所有邮政编码。 - Shyam Sunder

4

在GeoCoding领域,Google没有竞争对手 :)

您只需对以下链接进行 http Get请求 即可。 这是一个链接

根据您的要求 更改邮政编码元素。然后就可以愉快地使用了。

如需进一步参考,请访问链接Maps Geocoding Reference


3
您可以这样使用YQL:select centroid from geo.places where text="ZIPCODE_HERE"

2
您需要使用地理编码服务,例如由谷歌提供的服务或免费提供的Nominatim。请注意,由于您只提供邮政编码,可能由于地址本身的不准确性而无法获得所需结果。

2
此外(至少对于谷歌),请确保填写尽可能多的细节,甚至设置一些区域选项,以确保 ZIP 码在您期望的国家中进行搜索。对于包含空格的 ZIP 码格式,您可能需要先将其删除,否则谷歌可能仅使用第一部分并向您显示另一个国家。 - Arjan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接