2015-04-28 14 views
5

Ich habe 2 Marker, ich möchte eine Linie zwischen ihnen zeichnen, und habe einen Text, der den Abstand über der Linie zeigt, genau wie in der Web-Version von Google Maps.Wie füge ich Text über Polylinie in Google Maps hinzu?

maps

Ich habe bereits festgestellt, this Probe über eine Linie zwischen zwei Markierungen zeichnen, aber wie kann ich Text über der Zeile hinzufügen?

Antwort

3

Eine Idee wäre, den Mittelpunkt zwischen den beiden Markern mit ihren Breiten- und Längenkoordinaten zu berechnen und dann ein Infowindow mit allen Informationen, die Sie zeigen möchten, zu setzen. Oder etwas wie das Folgende könnte helfen: Link

+1

Gute Idee, aber laut [docs] (https://developers.google.com/maps/documentation/android/infowindows) kann immer nur 1 Infofenster sichtbar sein, an das gebunden werden muss Ein Marker. Also müsste ich einen unsichtbaren Marker verwenden und keine anderen Infofenster verwenden. – Tamas

+0

Oder eine andere Idee wäre benutzerdefinierte Overlays. Verwenden Sie Texte als benutzerdefinierte Überlagerungen über den Zeilen. Aber ich bezweifle, dass dies leichter zu erreichen ist. Unglücklicherweise scheint es momentan keine unterstützte Methode zu geben, die Text an eine Polylinie anfügt. –

+0

Mittlerweile habe ich den Infowindow-Hack ausprobiert, und es ist verrückt langsam. Ich muss es bei jedem Ziehereignis aktualisieren, damit es an der richtigen Stelle ist, und sogar mit nur einer Textansicht ist es wirklich langsam. ~ 1-2 fps während des Ziehens (auf der Registerkarte GT-P5200 der Galaxie). – Tamas

3

Ich hatte eine Situation, um den Abstand zwischen zwei Markierungen über der Polylinie zu zeigen.

Im Folgenden finden Sie, was meine Forderung war:

enter image description here

Ich schaffte es auf andere Weise zu tun, und es ist sehr interessant Weise, auf diese Weise Sie es etwas erreichen anpassen können.

Schritte:

  1. Berechnen des Abstandes zwischen den Markierungen von Location.distanceBetween() Verfahren.
  2. Erstellen Sie eine neue Layout XML Datei und erstellen Sie einen beliebigen Typ von UI, den Sie für Ihren Text anzeigen möchten. In meinem Fall enthielt es nur einen TextView.
  3. Legen Sie die berechnete Entfernung in TextView fest.
  4. Konvertieren Sie die XML Layout in Bitmap.
  5. Erstellen Sie ein BitmapDescriptor von diesem Bitmap Objekt.
  6. Finden Sie den Mittelpunkt zwischen den gewünschten Markern und fügen Sie einen benutzerdefinierten Marker mithilfe der BitmapDescriptor erstellt im letzten Schritt und Sie sind fertig.

Code:

Zur Berechnung der Entfernung zwischen zwei Markern

float[] distance1 = new float[1]; 
Location.distanceBetween(userMarker.getPosition().latitude, userMarker.getPosition().longitude, positionMarker.getPosition().latitude, positionMarker.getPosition().longitude, distance1); 

Bitmap Erstellen von XML-Layout-Datei

Um Mittelpunkt zwischen zwei Markern tun so etwas wie die folgenden finden Sie heraus:

double dLon = Math.toRadians(flagMarker.getPosition().longitude - positionMarker.getPosition().longitude); 

double lat1 = Math.toRadians(positionMarker.getPosition().latitude); 
double lat2 = Math.toRadians(flagMarker.getPosition().latitude); 
double lon1 = Math.toRadians(positionMarker.getPosition().longitude); 

double Bx = Math.cos(lat2) * Math.cos(dLon); 
double By = Math.cos(lat2) * Math.sin(dLon); 
double lat3 = Math.atan2(Math.sin(lat1) + Math.sin(lat2), Math.sqrt((Math.cos(lat1) + Bx) * (Math.cos(lat1) + Bx) + By * By)); 
double lon3 = lon1 + Math.atan2(By, Math.cos(lat1) + Bx); 

lat3 = Math.toDegrees(lat3); 
lon3 = Math.toDegrees(lon3); 

einen neuen cutom Marker hinzufügen, indem Sie die Bitmap-Descriptor von uns in den vorherigen Schritten erstellt mit

Marker centerOneMarker = mMap.addMarker(new MarkerOptions() 
       .position(new LatLng(lat3, lon3)) 
       .icon(flagBitmapDescriptor)); 

Ich hoffe, es hilft Ihnen.

+0

Genau das, was ich brauchte, hast du meinen Tag gerettet @gprathour, Danke. –

+0

@AmitabhSarkar Willkommen :) – gprathour

Verwandte Themen