geocoder.getFromLocationName 仅返回 null

2024-02-21

这两天我快要疯了IllegalArgumentException当尝试从地址中获取坐标,甚至反向获取经度和纬度地址时,我在 Android 代码中收到错误。这是代码,但我看不到错误。它是一个标准代码片段,很容易在 Google 搜索中找到。

public GeoPoint determineLatLngFromAddress(Context appContext, String strAddress) {
    Geocoder geocoder = new Geocoder(appContext, Locale.getDefault());
    GeoPoint g = null; 
    try {
        System.out.println("str addres: " + strAddress);
        List<Address> addresses = geocoder.getFromLocationName(strAddress, 5);
        if (addresses.size() > 0) {
            g = new GeoPoint(
               (int) (addresses.get(0).getLatitude() * 1E6),
               (int) (addresses.get(0).getLongitude() * 1E6)
            );
        }
    } catch (Exception e) {
        throw new IllegalArgumentException("locationName == null");
    }
    return g;
 }

这些是来自manifest.xml文件的权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

我也声明了 Google API 密钥:<uses-library android:name="com.google.android.maps" />

从上面的代码片段来看,geocoder is not null,也不是address or appContext,我在这里绊倒了:geocoder.getFromLocationName(strAddress, 5);

我做了很多谷歌搜索,但没有找到任何有用的信息,我发现的最重要的信息是:

Geocoder 类需要一个未包含在核心 Android 框架中的后端服务。

苏,我现在很困惑。我必须在代码中调用、导入、添加、使用什么......才能使其工作? 我正在使用 Google API 2.2,API 级别 8。 如果有人找到了这个问题的解决方案,或者文档的指针,一些我没有发现的东西,请告诉我们。


我遇到了类似的问题,发现轮询地理编码器直到得到结果为止。这是我的做法,到目前为止效果很好。

try {
    List<Address> geoResults = geocoder.getFromLocationName("<address goes here>", 1);
    while (geoResults.size()==0) {
        geoResults = geocoder.getFromLocationName("<address goes here>", 1);
    }
    if (geoResults.size()>0) {
        Address addr = geoResults.get(0);
        myLocation.setLatitude(addr.getLatitude());
        myLocation.setLongitude(addr.getLongitude());
    }
} catch (Exception e) {
    System.out.print(e.getMessage());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

geocoder.getFromLocationName 仅返回 null 的相关文章

随机推荐