Javascript 谷歌地图API-弹跳标记问题2
我是javascript新手,如果我做错了什么,希望你能原谅我的过错 事实上,我已经为我的问题找到了一个解决方案,但我不知道如何将它准确地输入到我自己的代码中 不幸的是,我不能仅仅评论它,因为我是stackoverflow的新手 我的问题: 我正在画一张有几个标记的地图。如果我点击一个标记,我希望它反弹并通过我设置的另一个图标切换颜色。到目前为止一切都很好,但目前我点击的所有标记都不会停止反弹。我希望标记反弹,直到我单击另一个标记。在这一点上,“旧”标记应该停止反弹,只有新的标记开始Javascript 谷歌地图API-弹跳标记问题2,javascript,google-maps,google-maps-api-3,google-maps-markers,Javascript,Google Maps,Google Maps Api 3,Google Maps Markers,我是javascript新手,如果我做错了什么,希望你能原谅我的过错 事实上,我已经为我的问题找到了一个解决方案,但我不知道如何将它准确地输入到我自己的代码中 不幸的是,我不能仅仅评论它,因为我是stackoverflow的新手 我的问题: 我正在画一张有几个标记的地图。如果我点击一个标记,我希望它反弹并通过我设置的另一个图标切换颜色。到目前为止一切都很好,但目前我点击的所有标记都不会停止反弹。我希望标记反弹,直到我单击另一个标记。在这一点上,“旧”标记应该停止反弹,只有新的标记开始 //Ma
//Marker Icons
var unvisitedMarker = 'img/m1.svg';
var activeMarker = 'img/m2.svg';
var visitedMarker = 'img/m3.svg';
//Add Marker Function
function addMarker(props) {
marker = new google.maps.Marker({
position: props.coords,
map: map,
icon: unvisitedMarker
});
//Opens marker information
var marker.addListener('click', function() {
document.getElementById("paperContainer").style.top = '40vh';
document.getElementById("locationBar").style.top = 'calc(40vh - 2em)';
map.panTo(marker.getPosition());
//Panby the map-position
map.panBy(0, 350);
//Set active Marker Icon
marker.setIcon(activeMarker);
//Set Marker Animation
marker.setAnimation(google.maps.Animation.BOUNCE);
});
}
因此,我从用户“doublesharp”链接的另一个线程中获得了此代码:
我不知道如何在我的owm代码中实现这一点。此外,如何实现在图标停止反弹后切换到“visitedMarker”
提前非常感谢 该解决方案的思想是保留对已单击标记的引用,并在单击新标记时修改该标记 这就是我的意思:
var currentMarker = null; // Define this variable preferably in the global context.
....
marker.addListener('click', function() {
if(currentMarker){ // Check if there is already an active marker
currentMarker.setAnimation(null);
currentMarker.setIcon(visitedMarker);
}
currentMarker = marker;// Keep a reference to this marker because it will became active.
document.getElementById("paperContainer").style.top = '40vh';
document.getElementById("locationBar").style.top = 'calc(40vh - 2em)';
map.panTo(marker.getPosition());
//Panby the map-position
map.panBy(0, 350);
//Set active Marker Icon
marker.setIcon(activeMarker);
//Set Marker Animation
marker.setAnimation(google.maps.Animation.BOUNCE);
});
它的工作就像一个魅力的反弹,我现在明白它是如何工作的!但图标不会切换到“已访问”图标。图像位于正确的目录中,但您的代码似乎也正常。你知道问题可能是什么吗?似乎是因为代码中的定位。即使标记图标get设置为“visitedMarker”,line marker.setIcon(activeMarker)也会出现在之后,并再次覆盖已访问的标记。我说的对吗?@Flo我在我的例子中犯了一个错误。现在修好了。我使用的是
marker.setIcon(visitedMarker)
而不是currentMarker.setIcon(visitedMarker)
@Flo如果这个答案解决了你的问题,别忘了标记它。顶部!非常感谢你,它正在正常工作!
var currentMarker = null; // Define this variable preferably in the global context.
....
marker.addListener('click', function() {
if(currentMarker){ // Check if there is already an active marker
currentMarker.setAnimation(null);
currentMarker.setIcon(visitedMarker);
}
currentMarker = marker;// Keep a reference to this marker because it will became active.
document.getElementById("paperContainer").style.top = '40vh';
document.getElementById("locationBar").style.top = 'calc(40vh - 2em)';
map.panTo(marker.getPosition());
//Panby the map-position
map.panBy(0, 350);
//Set active Marker Icon
marker.setIcon(activeMarker);
//Set Marker Animation
marker.setAnimation(google.maps.Animation.BOUNCE);
});