如何更改OpenLayers标记图标?

4

我正在使用Openlayers来开发我的应用程序。

我已经成功地在单击地图时显示了标记,但现在我想在单击标记时更改标记图标,该怎么做?我没有找到像 marker.setIcon(); 这样的方法。

我真的很困惑。

map.events.register("click", map , function(e){
   var opx = map.getLonLatFromPixel(e.xy) ;
   var marker = new OpenLayers.Marker(opx);
   markers.addMarker(marker);
   marker.events.register("click", marker, function(e){
    //here i want to change the icon to some other 
    popup = new OpenLayers.Popup.FramedCloud("chicken",
                         marker.lonlat,
                         new OpenLayers.Size(200, 200),
                         "example popup",
                         null, true);

     map.addPopup(popup);
       }); 
    // here i want to change to default.
  });
2个回答

12

嘿,在OpenLayers 4中,我遇到了一个错误,提示这不是一个函数。 - Ashim

1

我从这里得到了答案,这是代码

marker.events.register('click', marker, function() {
  // Reset all markers.
  for (var i=0; i<markers.length; i++) {
    markers[i].icon.imageDiv.firstChild.setAttribute(
      'src', 'images/red.png');
  }
  this.icon.imageDiv.firstChild.setAttribute('src', 'images/blue.png');
});

1
这种方法绕过了OpenLayers API,所以有点hackish。 - jjrv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接