我有一个地址,想在Google地图上显示该地址。地图显示但未指向该特定地址。这是我的代码。我收到此错误:couldn't get connection factory client
。
private MapController mc;
private MapView mapView;
GeoPoint p;
private MyOverlays mapOverlay;
mapView = (MapView) findViewById(R.id.myMapView);
mapView.setBuiltInZoomControls(true);
Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocationName(loc, 5);
if (addresses.size() > 0) {
p = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
mc.animateTo(p);
mapView.invalidate();
}
} catch (IOException e) {
e.printStackTrace();
}
if (p != null) {
Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher);
mapOverlay = new MyOverlays(drawable, this);
OverlayItem overlayitem = new OverlayItem(p, "", "");
mapOverlay.addOverlay(overlayitem);
mapView.getOverlays().add(mapOverlay);
this.mc = this.mapView.getController();
this.mc.setCenter(this.p);
this.mc.setZoom(16);
}
// LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, (LocationListener) this);
答案 0 :(得分:1)
我假设您在android Manifest 中提供了以下权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
您需要在测试设备上激活GPS。如果您在模拟器上进行测试并且未激活,则在尝试使用 LocationManager
时会获得“null”。
Google地图活动应自动激活模拟器中的GPS设备,但如果您想直接使用位置管理器,则需要自行执行此操作。 Using GPS and setting location会帮助你。
答案 1 :(得分:0)
您应该在设备上测试您的代码而不是在模拟器上。
不知道为什么但是模拟器中存在一些问题。
在我的情况下,它在设备上正常工作但在模拟器上出现相同的错误。