更改鼠标悬停在 div 上的标记图标

Tib*_*bor 2 javascript jquery google-maps google-maps-api-3

当用户将鼠标悬停在 div 标签上时,我想更改标记图标。我找到了一个接近的解决方案,当用户将鼠标悬停在标记本身上时,标记图标会发生变化。但我想使用 div 标签来更改它。

代码:

var icon1 = "imageA.png";
var icon2 = "imageB.png";

var marker = new google.maps.Marker({
    position: myLatLng,
    map: map,
    id: 1,
    icon: icon1,
    title: "some marker"
});

google.maps.event.addListener(marker, 'mouseover', function() {
    marker.setIcon(icon2);
});
google.maps.event.addListener(marker, 'mouseout', function() {
    marker.setIcon(icon1);
});
Run Code Online (Sandbox Code Playgroud)

我的设置应如下所示:

   <div class="sth" onmouseover="ShowMarker(id)" />
Run Code Online (Sandbox Code Playgroud)

我的 JS 类似:

    var icon1 = "imageA.png";
    var icon2 = "imageB.png";

    var marker = new google.maps.Marker({
        position: myLatLng,
        map: map,
        id: 1,
        icon: icon1,
        title: "some marker"
    });

    function ShowMarker(id) {
    google.maps.event.addListener(marker, 'mouseover', function() {
        marker[id].setIcon(icon2);
    });
    google.maps.event.addListener(marker, 'mouseout', function() {
        marker[id].setIcon(icon1);
    });

}
Run Code Online (Sandbox Code Playgroud)

此代码应该仅更改按 id 选择的标记。有人可以将我的代码更改为可用的吗?我真的很感激。

提前致谢。

Jac*_*nat 5

你必须在你想要的 div 上创建一个监听器:

<div class="sth" onmouseover="hover(1)" onmouseout="out(1)">MARKER 1</div> <div class="sth" onmouseover="hover(2)" onmouseout="out(2)">MARKER 2</div>

然后将标记推入另一个变量中,并对其进行循环:

var allMarkers = [];
var marker = new ...();
allMarkers.push(marker);

function hover(id) {
    for ( var i = 0; i< allMarkers.length; i++) {
        if (id === allMarkers[i].id) {
           allMarkers[i].setIcon(icon2);
           break;
        }
    }
}

...
Run Code Online (Sandbox Code Playgroud)

我做了一个演示,有评论。希望能帮助到你 :)