Ich baue eine MapView und möchte, dass meine benutzerdefinierten Overlay-Elemente den Namen des Ortes anzeigen, den sie markieren, wenn der Benutzer auf sie tippt, wie in der Android Maps-App.
Ich habe den onTap-Listener und das schwebende TextView eingerichtet, um den Ortsnamen zu halten. Ich muss es immer noch so einrichten, dass das Label neu gezeichnet wird, wenn der Benutzer die Karte verschiebt, usw.
Wie dem auch sei, ich frage mich, ob ich hier das Rad neu erfinde. Gibt es eine integrierte Methode, von der ich nichts weiß? Ich würde denken, dass die meisten Implementierungen von MapView Labels haben.
Zur Referenz, meine bisherige Implementierung:
im Karten-XML:
in meinem erweiterten ItemizedOverlay:
public boolean onTap(int index) {
this.setFocus( mOverlays.get(index) );
return true;
}
in meiner Aktivität onFocus:
public void onFocusChanged( ItemizedOverlay overlay, OverlayItem item ) {
if( item != null) {
mapBubble.setText(item.getTitle());
Point newPoint = mapView.getProjection().toPixels(item.getPoint(), null);
mapBubbleWrap.setPadding(newPoint.x, newPoint.y-10, 0, 0);
mapBubble.setVisibility(View.VISIBLE);
}
}