у меня была точно такая же начальная ситуация, как вы описали.
когда вы видите плитки карты, очевидно, что некоторые не хватает, чтобы увидеть позицию на карте:
1.вам нужно местоположение .я осознал, что установка эмулятора только географической позиции с помощью DDMS-вида недостаточна.Вы должны явно нажимать каждый раз кнопку «Отправить» в DDMS для запуска обновления местоположения на вашем эмуляторе.(просто упомянуть: на реальном устройстве вам иногда приходится немного ходить, чтобы заставить ваше устройство получать обновление местоположения;), я был так взбешен, пока не ходил, думая о том, что теперь делать ^^)
2.вам нужна правильная реализация ItemizedOverlay с правильным OverlayItem .я написал свой собственный оверлей, который стал немного «сложным».если вы не уверены, что ваша реализация верна, используйте это руководство, чтобы создать реализацию с минимальными изменениями Руководство по просмотру карты для разработчиков Android
или используйте это:
private class MyItemizedOverlay extends ItemizedOverlay {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
public MyItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
@Override
public int size() {
return mOverlays.size();
}
}
private void updateLocationOverlay() {
if (location == null) { return };
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.XXXX);
MyItemizedOverlay myItemizedOverlay = new MyItemizedOverlay(drawable);
GeoPoint point = new GeoPoint((int)(location.getLatitude() * 1E6), (int)(location.getLongitude() * 1E6));
OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!");
myItemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(myItemizedOverlay);
}
Я хочу особо отметить, что вы должны вызывать boundCenter или boundCenterBottom на чертеже.иначе это не будет нарисовано.Также будьте осторожны, если вы используете разные маркеры в одном и том же оверлее с overlayItem.setMarker, который вы тоже называете там.
3.Вы должны переместить вид на карте к вашей точке .Вы можете добиться этого следующим образом:
MapController mapController = mapView.getController();
mapController.setCenter(point)
Я понял, что функция mapController.zoomToSpan не работает.(по крайней мере для меня, я все еще разрабатываю это приложение).может быть, то же самое с animateTo .я не пробовалустановить центр работ.(и также установить уровень масштабирования).
Возможно, в упомянутых мною местах есть что-то, что может привести к тому, что ваша карта работает не так, как вы хотите.
Удачи!
edit: я забыл упомянуть, что я все еще получаю эту заводскую ошибку клиента, даже если она работает, чтобы получить действительное местоположение, реальное на устройстве и поддельное на эмуляторе с помощью ddms send).сейчас я просто игнорирую.