我的地图中有一些标记,我想根据我点击的哪一个来设置一个或另一个标记的动画。但是动画只能使用我创建的最后一个标记而不是其他标记。 我尝试将标记作为数组但是同样的问题。 这是代码:
<script type="text/javascript">
var marker = null;
var address = null;
var altura = null;
function codeAddress() {
altura = document.getElementById('altura').value;
address = document.getElementById('address').value + ' ' + altura ;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
// Marker
marker = new google.maps.Marker({
map: map,
icon: document.getElementById('icono').value,
position: results[0].geometry.location,
animation: google.maps.Animation.DROP
});
// Animating Listener
google.maps.event.addListener(marker, 'click', toggleBounce);
} else {
alert('Error: ' + status);
}
});
}
function toggleBounce() {
if (marker.getAnimation() != null) {
marker.setAnimation(null);
} else {
marker.setAnimation(google.maps.Animation.BOUNCE);
}
}
</script>
提前致谢。
答案 0 :(得分:2)
您需要保留对要设置动画的所有标记的引用,然后将动画设置为正确的标记。您发布的代码只有一个标记。
解决问题的一种方法是使用函数闭包:
function createMarker(latlng, address, icon){
// Marker
var marker = new google.maps.Marker({
map: map,
icon: icon,
position: latlng,
animation: google.maps.Animation.DROP
});
// Animating Listener
google.maps.event.addListener(marker, 'click', function() {
if (marker.getAnimation() != null) {
marker.setAnimation(null);
} else {
marker.setAnimation(google.maps.Animation.BOUNCE);
}
});
}