单击时更改googlemaps标记

时间:2015-07-29 14:41:04

标签: javascript google-maps

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

这是我的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,所以希望有人可以指出我在此过程中犯的错误。

谢谢!

1 个答案:

答案 0 :(得分:1)

您正在寻找的方法是:

marker.setIcon({}); 

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