【问题标题】:how can I change marker options without using marker = new google.maps.Marker如何在不使用 marker = new google.maps.Marker 的情况下更改标记选项
【发布时间】:2012-03-26 10:51:23
【问题描述】:

我发现下面的函数只创建一个标记 - 这就是我想要的。 但是如何更改标记选项,例如html - 不创建新的?
即下面的代码将使用 setPosition 移动现有标记,但如果我还希望更改其 html 和标题怎么办......

变量标记;

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

【问题讨论】:

    标签: google-maps-api-3 google-maps-markers


    【解决方案1】:

    html 是绑定到标记的“单击”事件的 infoWindow 的内容。有一个 infoWindow.setContent() 方法。我会在创建标记时扩展标记以保存 html 内容,然后在重置位置、标题等的位置对其进行更新。然后您需要编写自己的“单击”事件处理程序以针对单个全局 infoWindow 使用某些内容。

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

    【讨论】:

    • 我觉得我有点天真,只是盲目地使用原始代码。所以代替 infoBubble.setContent(marker.html);我可以使用任何变量作为内容,如 var content = contents; infoBubble.setContent(content);.....我认为
    • 是的。这解决了我的问题。谢谢。
    【解决方案2】:

    marker对象的属性大多都有对应的get和set方法,as detailed in the documentation

    例如,Title 有一个 get_Title() 方法和一个 set_Title() 方法,可以这样使用...

    myMarker.setTitle('my new title');
    

    【讨论】:

    • 谢谢 Baldy - 这解决了我的标题问题,但我没有看到 html 的选项......或者我可以创建一个例如marker.setHtml('stuff');
    • 文档表明没有这样的属性。你在哪里见过这个楼盘?还是您指的是可能包含此可能已弃用的属性的旧版谷歌地图(例如 v2)?
    • 啊。我正在使用 infoBubble,它指的是标记选项 html - infoBubble.setContent(marker.html); 'html' 基本上相当于信息窗口内容字符串。 'html' 是标记选项之一 - marker = new google.maps.Marker({ position: markercenter, map: map, shadow: shadow, icon: image, shape: shape, html:'
      '+markerName+'
      ', 可拖动: false, title:markerName });
    【解决方案3】:

    Maker 是一个 MVCObject,这个类有 set 方法

    marker.set(property, New_Value);
    

    如果要更改多个属性,可以使用setOptions方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-09
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多