【发布时间】:2015-10-06 17:54:06
【问题描述】:
我使用 Google Geocoder 编写了两个测试: 一项测试只是请求给定地址的地理点,
而第二个获取从谷歌检索的地理点并尝试获取地址。
我的问题是,在地址中谷歌返回给我的地址与它自己的(地理点)不一样! 总结一下; 我的地址:Hirtenstraße 4, 10178 Berlin, Germany
Google 的地理点:lat = 52.5257827,lng = 13.4113952
谷歌返回地址:Hirtenstraße 4, 10178 Berlin, Germany
我的问题:有没有办法控制(提高)您返回的地理点结果的精度?
// ####### example code below################################################
@Test
public void testGetPoints() throws IOException {
final Geocoder geocoder = new Geocoder();
String land = "Germany";
String city = "Berlin";
String streetAddress = "4 Hirtenstraße";
String postcode = "10178";
String fullAddress = streetAddress + ",+" + postcode + ",+" + city + ",+" + land;
fullAddress = fullAddress.replace(" ", "+");
GeocoderRequest geocoderRequest = new GeocoderRequestBuilder().setAddress(fullAddress).setLanguage("en").getGeocoderRequest();
GeocodeResponse geocoderResponse = geocoder.geocode(geocoderRequest);
ArrayList<GeocoderResult> addresses = new ArrayList<>(geocoderResponse.getResults());
for (GeocoderResult r : addresses) {
System.out.println(r.getGeometry().getLocation());
}
}
@Test
public void testGeocoder() throws IOException {
ArrayList<GeocoderResult> addresses = new ArrayList<GeocoderResult>();
GeocodeResponse geocoderResponse;
Geocoder geocoder = new Geocoder();
// geo points we get from the previous test
BigDecimal lat = new BigDecimal(52.5257827);
BigDecimal lng = new BigDecimal(13.4113952);
GeocoderRequest geocoderRequest = new GeocoderRequestBuilder().setLocation(new LatLng(lat, lng)).setLanguage("en").getGeocoderRequest();
geocoderResponse = geocoder.geocode(geocoderRequest);
addresses.addAll(geocoderResponse.getResults());
for (GeocoderResult r : addresses) {
System.out.println(r.getFormattedAddress());
// first value returns:
// Hirtenstraße 5, 10178 Berlin, Germany !!!!! not 4!
}
}
【问题讨论】:
标签: google-maps google-geocoder