san*_*art 1 java android google-maps
Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.ENGLISH);
try {
List<Address> addresses = geocoder.getFromLocation(lat,lon, 1); <--Exception
Run Code Online (Sandbox Code Playgroud)
此代码导致异常服务不可用.谁能帮我?我已经读过它是A 2.2的一个bug,api 10是A 2.3.3所以从理论上说它应该可行.
回答:
首先,如果您使用的是模拟器,请尝试将AVD设备的"目标"设置为"Google API"之一,而不是基本的"Android"sdk.因此,如果您想要定位2.3.3,请使用"Google API(Google Inc.) - API Level 10"而不是 "Android 2.3.3 - API Level 10".
背景信息
该谷歌的API插件包括后端服务实现(搜索"地理编码器后端")所需要的Geocoder.getFromLocation...工作方法.
Geocoder类需要一个未包含在核心android框架中的后端服务
这就是为什么您的AVD必须以Google API为目标才能使这些方法有效.如果这不起作用,请尝试在真实设备上进行测试.除了可能的错误之外,获得此异常的原因是互联网出现问题/缺少连接,或者更可能是该设备上没有后端服务.
据推测,大多数包含Google服务和地图等应用的设备都会实现后端.我不知道这是多么准确.
还有一种从API9开始的方法,Geocoder.isPresent()如果存在后端实现,则返回true.然而,我发现这是不可靠的,因为在亚马逊Kindle Fire上测试它返回true,但是在getFromLocationName()打电话时我仍然有一个IOException: Service Not Available
确定后端是否存在似乎是最可靠的方法,只是进行getFromLocation...调用并查看您的addresses字段null是否List为空或者是否为空.null如果根本找不到匹配项,这些方法也可能返回一个或空列表,这有点含糊不清.
| 归档时间: |
|
| 查看次数: |
2486 次 |
| 最近记录: |