我正在尝试使用地理编码来获取地址,计算出经度和纬度,然后在地图上显示叠加层。
我使用下面的代码,但日志条目Log.e(“Found”,“”+ lat);永远不会触发,我不知道为什么。有人可以帮忙吗?
谢谢!
private void showpins() throws IOException {
Geocoder gc = new Geocoder(this);
String Address = "Oxford Street, London";
Log.e("Lat",""+Address);
List<Address> foundAdresses = gc.getFromLocationName(Address, 5); //Search addresses
int lat;
int lon;
for (int i = 0; i < foundAdresses.size(); ++i) {
Address x = foundAdresses.get(i);
lat = (int) x.getLatitude();
lon = (int) x.getLongitude();
Log.e("Found",""+lat);
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.pushpin);
CustomizedItemOverlay itemizedOverlay =
new CustomizedItemOverlay(drawable, this);
GeoPoint point = new GeoPoint(lat, lon);
OverlayItem overlayitem =
new OverlayItem(point, "Hello", "Location");
itemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedOverlay);
}
}
答案 0 :(得分:1)
您的地址不在Google地图地址数据库中,或者您的应用没有互联网访问权限。
检入http://maps.google.com确实找到了地址。
该应用程序具有互联网访问权限。你必须在ypur应用程序清单中有这个:
<uses-permission android:name="android.permission.INTERNET" />
答案 1 :(得分:1)
在某些模拟器API级别中存在明确的问题。见Issue 8816: service not available。例如,API级别8将不起作用。如果您调用该方法两次,我发现API级别7是正常的。我不知道真实设备上的行为。我认为Google不保证该服务始终可用。