wake-up-neo.net

Map-Marker mit Text in Google Maps Android API v2

Ich habe diesen Beitrag erstellt, aber er ist für die veraltete Google Maps-API

http://tech.truliablog.com/2012/02/23/custom-map-markers-for-Android-google-maps/

In der neuen API konnte ich keinen einfachen Weg finden, dies zu tun. Tatsächlich konnte ich es überhaupt nicht tun. 

Grundsätzlich möchte ich TextViews als Marker auf der Karte haben und 9Patch als Hintergrund für den Text zeichnen. Trulia macht es immer noch mit der neuen API v2 in ihrer aktuellen App. Sie können es hier überprüfen

Trulia current app

Wie kann ich das machen?

11
tasomaniac

Chris Broadfoot hat eine Dienstprogrammbibliothek erstellt, die genau das tut.

Die Bibliothek ist hier verfügbar: https://github.com/googlemaps/Android-maps-utils

Sehen Sie auch dieses kurze Video: http://www.youtube.com/watch?v=nb2X9IjjZpM

33
MaciejGórski

Soweit ich weiß, wird dies derzeit nicht von Google Maps api v2 unterstützt. Was Sie dagegen tun können, ist die dynamische Erstellung der Bitmap für Ihre Markierung und die Eingabe des Werts, den Sie anzeigen möchten drin. Leider kann es leicht zu Leistungsproblemen kommen, wenn Sie viele Pins haben.

Canvas canvas = new Canvas(bitmap);
canvas.drawText("Your text", textXOffset, textYOffset, mPictoPaint);
MarkerOptions options = new MarkerOptions().position([…]).icon(BitmapDescriptorFactory.fromBitmap(bitmapResult));
Marker newMarker = map.addMarker(options);

Beachten Sie, dass bitmap veränderlich sein muss. Außerdem müssen Sie das Basisbild (wahrscheinlich mit einem 9.patch) an Ihre Bedürfnisse anpassen.

5
Nerkatel

Dies kann einfach mit dieser nützlichen Bibliothek von Google erreicht werden.

IconGenerator icg = new IconGenerator(this);
icg.setColor(Color.GREEN); // green background 
icg.setTextAppearance(R.style.BlackText); // black text 
Bitmap bm = icg.makeIcon("200 mi");

In style.xml 

<style name="BlackText" parent="TextDefault">
    <item name="Android:textColor">@color/black</item>
</style>

http://googlemaps.github.io/Android-maps-utils/javadoc/

http://googlemaps.github.io/Android-maps-utils/

https://github.com/googlemaps/Android-maps-utils

5
Justcurious

unter Bezugnahme auf Googles Beispielcode

IconGenerator iconFactory = new IconGenerator(this);    
        iconFactory.setColor(Color.CYAN);
        addIcon(mMap, iconFactory, "Custom color", new LatLng(-33.9360, 151.2070));

addIcon () Methode hier:

private void addIcon(GoogleMap googleMap, IconGenerator iconFactory, CharSequence text, LatLng position) {
        MarkerOptions markerOptions = new MarkerOptions().
                icon(BitmapDescriptorFactory.fromBitmap(iconFactory.makeIcon(text))).
                position(position).
                anchor(iconFactory.getAnchorU(), iconFactory.getAnchorV());

        googleMap.addMarker(markerOptions);
    }
0
AbhinayMe

Ich weiß, dass diese Frage alt ist, aber ich werde meine Antwort hier posten, falls sie jemandem hilft.

Keine der oben genannten Lösungen funktionierte für mich da

  • Ich habe bereits benutzerdefinierte Symbole für Markierungen in meiner App

  • Meine App zeigt möglicherweise Tausende verschiedener Markentitel an, sodass die Erstellung vieler Bilder im Speicher ein Leistungsproblem darstellen würde

  • Wenn die Markierungssymbole größer werden, wird die Karte sehr schnell unlesbar

  • Ich wollte, dass die Titel nur angezeigt werden, wenn Platz vorhanden ist, und sich möglicherweise verstecken, wenn nicht genügend Platz zum Anzeigen vorhanden ist

Ich habe im Internet keine Lösung gefunden, also habe ich die Ärmel hochgekrempelt und diese Bibliothek erstellt, die mein Problem löst. Hoffentlich hilft sie auch anderen:

https://github.com/androidseb/Android-google-maps-floating-marker-titles

Hier ist eine Vorschau, wie es funktioniert:

 preview

0
androidseb