【问题标题】:Change googlemaps marker when clicked [duplicate]单击时更改googlemaps标记[重复]
【发布时间】:2015-07-29 14:41:03
【问题描述】:

我正在尝试创建一个 javascript 函数,该函数将在单击 Google 地图标记时更改其颜色。然后,如果点击了新的标记,它会将旧的标记恢复为原来的颜色并更改新的标记。

这是我的changeMarker(marker, i)函数被调用的地方

google.maps.event.addListener(marker, 'click', (function(marker, i) {
        return function() {
            changeMarker(marker, i);
        }
    })(marker, i));

这是我的changeMarker() 函数

function changeMarker(marker, i) {
    if(lastMarker) {
        lastMarker.setMap(null);
        console.log("Last Marker Removed");
        var position = new google.maps.LatLng(buisnesses[lastID][1], buisnesses[lastID][2]);
        marker = new google.maps.Marker({
            position: position,
            map: map,
            title: buisnesses[lastID][0],
            icon: ("http://www.googlemapsmarkers.com/v1/0099FF/")
        });
        console.log("Last Marker Replaced");
    }

    marker.setMap(null);
    console.log("New Marker Removed");
    var position = new google.maps.LatLng(buisnesses[i][1], buisnesses[i][2]);
    bounds.extend(position);
    var newMarker = new google.maps.Marker({
        position: position,
        map: map,
        title: buisnesses[i][0],
        icon: ("http://www.googlemapsmarkers.com/v1/D75C37/")
    });
    console.log("New Marker Created");
    lastMarker = newMarker;
    lastID = i;
}

因为我找不到任何方法来简单地更改已创建标记的icon 字段,所以我采取了删除标记并在每次需要发生颜色更改时替换它。但是,这种实现给了我非常不一致的结果(第一次按下新标记时从不替换第一个标记,按下时某些标记什么都不做,等等......)。

如果有更简单的方法可以做到这一点,有什么想法吗?我将是第一个承认我不是最擅长 javascript 的人,所以希望有人能指出我在此过程中犯的错误。

谢谢!

【问题讨论】:

  • 如果你发布了一个好问题,你不应该删除它。 SO 保留好问题,以便其他人可以搜索和找到它们。

标签: javascript google-maps


【解决方案1】:

你要找的方法是:

marker.setIcon({}); 

https://developers.google.com/maps/documentation/javascript/markers

【讨论】:

  • 我怎么会错过...谢谢一堆
猜你喜欢
  • 1970-01-01
  • 2012-08-25
  • 2020-02-02
  • 2016-12-01
  • 2019-03-19
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多