2012-03-26 4 views
3

Ich habe die Funktion unten gefunden, die nur einen Marker erstellt - was ich will. Aber wie ändere ich die Marker-Optionen, z. html - ohne einen neuen zu erstellen?
, d. H. Der folgende Code wird einen bestehenden Marker mit setPosition verschieben, aber was ist, wenn ich auch möchte, dass HTML und Titel geändert werden ....Wie kann ich Marker-Optionen ohne Marker ändern = new google.maps.Marker

var marker;

function placeMarker(location) { 
if (marker) { 
marker.setPosition(location); 
} else { 
marker = new google.maps.Marker({ 
    position: location, 
    map: map 
}); 
} 
} 

Antwort

3

der html ist der Inhalt des Infowindow die Markierung des ‚Klick‘ Ereignis gebunden. Es gibt eine infoWindow.setContent() -Methode. Ich würde den Marker verlängern, um den HTML-Inhalt zu halten, wenn Sie ihn erstellen, und ihn dann aktualisieren, wo Sie die Position, den Titel usw. zurücksetzen. Dann müssen Sie einen eigenen 'click'-Event-Handler schreiben, um etwas gegen ein einzelnes globales infoWindow zu verwenden.

google.maps.event.addListener(marker, 'click', function() { 
       infoWindow.setContent(marker.html); 
       infowindow.open(map,marker); 
      }); 
+0

Ich denke, ich war ein bisschen naiv und habe nur sklavisch mit dem Originalcode gearbeitet. Also anstelle von infoBubble.setContent (marker.html); Ich könnte jede Variable für den Inhalt wie in var content = contents verwenden; infoBubble.setContent (Inhalt); ..... Ich denke – webewitch

+0

Yup. Das ist mein Problem sortiert. Vielen Dank. – webewitch

1

die Eigenschaften des Markerobjekts meist entsprechende Get- und Set-Methoden haben, as detailed in the documentation

Zum Beispiel hat Titel einen get_Title() -Methode und eine set_Title() -Methode, die Sie so verwenden können. ..

myMarker.setTitle('my new title'); 
+0

Dank Baldy verwenden - das ist mein Titel Problem löst, aber ich keine Option für html sehen ... oder kann ich einfach einen erstellen zB marker.setHtml ('Zeug'); – webewitch

+0

Die Dokumentation deutet darauf hin, dass es keine solche Eigenschaft gibt. Wo haben Sie diese Immobilie gesehen? Oder beziehen Sie sich auf eine ältere Version von Google Maps (z. B. Version 2), die diese potenziell veraltete Eigenschaft enthalten könnte? – Baldy

+0

ah. Ich arbeite mit infoBubble, das auf die Marker-Option verweist html - infoBubble.setContent (marker.html); und "html" ist im Grunde das Äquivalent zum Infofenster contentString. Die 'html' ist eine der Markierungsoptionen - Marker = new google.maps.Marker ({ Position: markercenter, Karte: Karte, \t Schatten: Schatten, Symbol: Bild, Form: Form, \t html : '

'+markerName+'
', \t ziehbar: falsch, titel: markerName }); – webewitch

1

Maker ist ein MVCObject und diese Klasse haben die "set" -Methode

marker.set (Eigenschaft, new_value);

Wenn Sie mehr als eine Eigenschaft ändern möchten, können Sie setOptions Methode

Grüße cadetill

+0

Danke cadetill – webewitch