2012-03-26 15 views
3

我發現下面的函數只創建一個標記 - 這正是我想要的。 但是,如何更改標記選項HTML - 沒有創建一個新的?
即下面的代碼將使用setPosition移動一個現有的標記,但是如果我也希望它的html和標題改變了怎麼辦?標記對象的如何更改標記選項而不使用marker = new google.maps.Marker

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

回答

3

html是綁定到標記的'click'事件的infoWindow的內容。有一個infoWindow.setContent()方法。我將擴展標記以在創建時保存html內容,然後在重置位置,標題等位置更新它。然後,您需要編寫自己的「單擊」事件處理函數以針對單個全局infoWindow使用某些東西。

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

我覺得我一直有點天真,只是與原始代碼一起奴役。因此,而不是infoBubble.setContent(marker.html);我可以在var content = contents中使用任何內容變量; infoBubble.setContent(content); .....我認爲 – webewitch 2012-03-26 12:20:31

+0

是的。這是排序我的問題。謝謝。 – webewitch 2012-03-26 14:00:25

1

的屬性大多具有對應get和set方法,as detailed in the documentation

例如,標題具有get_Title()方法和一個SET_TITLE()方法,該方法可以使用這樣的。 ..

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

謝謝禿子 - 這解決了我的標題問題,但我沒有看到HTML選項...或者我可以創建一個例如marker.setHtml( '東西'); – webewitch 2012-03-26 11:18:18

+0

該文件表明沒有此類財產。你在哪裏看過這個屬性?或者您是指舊版Google地圖(如v2),其中可能包含此可能已被棄用的財產? – Baldy 2012-03-26 11:28:56

+0

啊。我正在處理infoBubble,它涉及標記選項html - infoBubble.setContent(marker.html);和'html'基本上相當於信息窗口contentString。該 'HTML' 是的標記選項之一 - 標記=新google.maps.Marker({ 位置:markercenter, 圖:圖, \t陰影:陰影, 圖標:圖像, 形狀:形狀, \t HTML :'

'+markerName+'
', \t draggable:false, title:markerName }); – webewitch 2012-03-26 12:07:39

1

Maker是一個MVCObject和這個類有 「設置」 方法

marker.set(屬性,NEW_VALUE);

如果你想改變一個以上的屬性,你可以使用setOptions方法

問候 cadetill

+0

謝謝cadetill – webewitch 2012-03-27 13:37:12

相關問題