我正在尝试从我的经度和纬度结果创建一个响应,以纯字符串形式的地址。当我运行调试器时,我抛出异常服务不可用我假设因为我没有输入API密钥。我的问题是,在不创建创建未使用的mapview的xml文件的情况下,我将API键放在何处?
答案 0 :(得分:2)
试试这个:
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1);
if(addresses != null) {
Address returnedAddress = addresses.get(0);
StringBuilder strReturnedAddress = new StringBuilder("Address:\n");
for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) {
strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
}
myAddress.setText(strReturnedAddress.toString());
}
else{
myAddress.setText("No Address returned!");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
myAddress.setText("Canont get Address!");
}
我的清单中有两个权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
答案 1 :(得分:1)
(注:答案根据评论而改变)
我原先假设Geocoder
需要Google APIs Addon才能正常工作,因为documentation表示该类使用核心android框架中未提供的后端服务。
经过进一步调查后,我发现不需要Google API附加组件。相反,目标设备必须支持后端服务,我认为这意味着它需要是一个包含Play商店应用程序或谷歌地图应用程序或两者兼有的设备?
无论哪种方式,为了证明这个理论,我制作了一个不使用Google API附加组件的简单测试应用程序,但它仍适用于我的Galaxy Nexus设备。如果我在模拟器上运行它(当然,它不包括Play商店或Google地图),它会抛出Service not Available
。
答案 2 :(得分:0)
查看
行Geocoder geocoder = new Geocoder(this, Locale.getDefault());
相反,试试这段代码......
Geocoder geocoder = new Geocoder(this);
它们是相同的代码,但我已经解决了这个问题。 但是,这太糟糕了。
HMM ..