3 Stimmen

Android: Karten Overlay Labels

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);
    }
}

3voto

CommonsWare Punkte 950864

Ich würde denken, dass die meisten Implementierungen von MapView Labels haben.

Möglicherweise, aber im Google Map-Add-On ist nichts eingebaut, um sie zu unterstützen, über das hinaus, was Sie bereits tun. Obwohl ich nicht ganz verstehe, worum es bei der ganzen Fokussierung geht. Wenn ich ein Popup-Panel anzeigen möchte, wenn der Benutzer tippt, dann zeige ich einfach ein Popup-Panel an, wenn der Benutzer tippt - siehe dieses Projekt für ein Beispiel.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X