Почему мои наложения на карте не отображаются?
-
23-09-2019 - |
Вопрос
Я следовал инструкциям из руководства Google hellomapview.Я получаю рабочий вид карты и т. д.Но два элемента, добавленные на карту, не отображаются.Кажется, они где-то здесь, потому что при нажатии на указанное место отображается сообщение, добавленное к элементам.
Редактировать
Вот мой исходный код.Он должен быть очень близок к исходному коду учебника Google.
public class MapOverlay extends ItemizedOverlay<OverlayItem> {
private List<OverlayItem> overlays = new ArrayList<OverlayItem>();
private Context context;
public MapOverlay(Drawable defaultMarker, Context context) {
super(defaultMarker);
overlays = new ArrayList<OverlayItem>();
this.context = context;
}
@Override
protected OverlayItem createItem(int i) {
return overlays.get(i);
}
@Override
public int size() {
return overlays.size();
}
public void addOverlay(OverlayItem overlay) {
overlays.add(overlay);
this.populate();
}
@Override
protected boolean onTap(int index) {
OverlayItem item = overlays.get(index);
AlertDialog.Builder dialog = new AlertDialog.Builder(this.context);
dialog.setTitle(item.getTitle());
dialog.setMessage(item.getSnippet());
dialog.show();
return true;
}
}
public class MapsActivity extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
MapOverlay overlay = new MapOverlay(this.getResources().getDrawable(
R.drawable.androidmarker), this);
overlay.addOverlay(new OverlayItem(new GeoPoint(19240000,-99120000), "Blubb", "See?"));
mapView.getOverlays().add(overlay);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
Доступен ли где-нибудь исходный код из руководства Google?
Решение
Проблема в том, что я забыл установить границы рисования.Кажется, что если представление карты не знает, как выровнять изображение, оно вообще не будет его показывать.
Я изменил первую строку в своем конструкторе с:
super(defaultMarker);
к
super(boundCenterBottom(defaultMarker));
и знайте, что он работает идеально.
Не связан с StackOverflow