0

我需要根据自动更新的DOM元素的内部内容自动更改Google地图图标。Google地图标记图标自动更改

我看过addListeneraddDomListener的文档,但它都是鼠标悬停和点击。我需要它来检测有问题的元素的纯HTML内容的变化,如果该值符合某些条件,请根据此值更改标记的图标。

这里是我使用的代码:

infowindow=new google.maps.InfoWindow(); 
for (i=0;i<buildings.length;i++){ 
    marker=new google.maps.Marker({ 
     position:new google.maps.LatLng(buildings[i][4],buildings[i][5]), 
     map:map, 
     shadow:shadow, 
     icon:greenIcon, 
     title:buildings[i][0]+" \n"+buildings[i][1], 
     zIndex:buildings[i][6] 
    }); 
} 

我正在考虑在与jQuery一起添加setInterval迫使buildings[i][7]数组值(上述不包括)至等于有问题的div的内容,然后运行一些条件语句来确定它是否符合更改标记图标的正确标准。

但之后,我迷失了关​​于如何根据动态更新的值让标记实际更改。

回答

2

要设置与Marker关联的图标,试用Marker.setIcon功能。它接受一个参数,它可以是:

  1. 一个string包含图标图像文件的相对位置(在你的代码),OR -
  2. 一个MarkerImage,它给你更多的控制权(锚,原点,尺寸等)在图标图像的显示方式
+0

谢谢。这是我正在寻找的一部分(我也发现它在http://stackoverflow.com/questions/1941260/google-maps-api-v3-how-do-i-dynamically-change-the-marker-icon )...但是有没有一种方法来检测DOM元素的变化(这会触发变化),还是我不得不把它放在'setInterval'上?如果我不必这样做,我宁愿不这样做。 – InterfaceGuy 2012-05-01 19:20:07

+0

好吧,由于没有任何方法可以通知元素更改,所以您必须:轮询元素(如果您喜欢,请使用'setInterval')或使用我们在其他问题中讨论的数据绑定机制: http://stackoverflow.com/q/10355852/1314132。 – 2012-05-01 19:38:01

+0

谢谢肖恩。你的帮助是不可或缺的。 :) – InterfaceGuy 2012-05-02 16:20:56

0

从谷歌API文档

var beachMarker = new google.maps.Marker({ 
     position: myLatLng, 
     map: map, 
     icon: image 
    }); 
    map.addOverlay (beachMarker); 
+0

这是否会在旧的标记之上放置一个全新的标记?我不想那样;我想换掉我已经有的那个。 – InterfaceGuy 2012-04-27 18:53:09