地理编码器不适用于某些地址

时间:2018-03-18 10:01:04

标签: android google-geocoder google-geocoding-api

我正在使用goecoder尝试将地址转换为lat / lng。但是,似乎地理编码器适用于某些地址但不适用于其他地址。如果我在谷歌地图上搜索地址,那么它就能完美地找到它。

以下是加拿大安大略省渥太华的Crichton街38号的示例 当我运行下面的代码时,该地址返回0结果

            Location loc = null;
            Geocoder geoCoder = new Geocoder(this, Locale.getDefault());
            try {

                List<Address> address = geoCoder.getFromLocationName(addr, 1);
                if (address.size() == 0) {
                    return null;
                }
                double latitude = address.get(0).getLatitude();
                double longitude = address.get(0).getLongitude();
                loc = new Location("Unknown");
                loc.setLatitude(latitude);
                loc.setLongitude(longitude);
            }  catch (IOException ioException) {
                Log.e(TAG, ioException.toString());
            } catch (IllegalArgumentException illegalArgumentException) {
                Log.e(TAG, illegalArgumentException.toString());
            }

知道为什么或如何解决它

谢谢

1 个答案:

答案 0 :(得分:0)

不确定为什么原生Android API地理编码器无法找到此地址。我可以看到这个地址可以在地理编码API网络服务中找到:

https://maps.googleapis.com/maps/api/geocode/json?address=38%20Crichton%20Street%2C%20Ottawa%2C%20ON%2C%20Canada&key=MY_API_KEY

您也可以在Geocoder工具中看到它:

https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D38%2520Crichton%2520Street%252C%2520Ottawa%252C%2520ON%252C%2520Canada

作为一种解决方法,您可以考虑使用Geocoding API网络服务。请注意,您可以在Github上找到用于Web服务的Java客户端库:

https://github.com/googlemaps/google-maps-services-java

客户端库的Javadoc位于

https://googlemaps.github.io/google-maps-services-java/v0.2.5/javadoc/

我希望这有帮助!