Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置谷歌地图反弹标记的动画_Javascript_Google Maps Api 3_Knockout.js - Fatal编程技术网

Javascript 设置谷歌地图反弹标记的动画

Javascript 设置谷歌地图反弹标记的动画,javascript,google-maps-api-3,knockout.js,Javascript,Google Maps Api 3,Knockout.js,我试图在我的标记上实现反弹动画,我遵循了相关文档,并且只对阵列中的第一个标记设置了动画。我尝试将标记上的位置调用到事件侦听器中,但这似乎不起作用。有什么建议吗 这是我的密码: for(var i = 0; i < locationArray().length; i++){ var locations = locationArray()[i].location; var title = locationArray()[i].title; var marker = new

我试图在我的标记上实现反弹动画,我遵循了相关文档,并且只对阵列中的第一个标记设置了动画。我尝试将标记上的位置调用到事件侦听器中,但这似乎不起作用。有什么建议吗

这是我的密码:

for(var i = 0; i < locationArray().length; i++){
   var locations = locationArray()[i].location;
   var title = locationArray()[i].title;

   var marker = new google.maps.Marker({
       position: locations,
       map: map,
       title: title,
       icon: defaultMarker,
       animation: google.maps.Animation.DROP
           });

  google.maps.event.addListener(marker,'click', function(){
       if (marker.getAnimation() !== null) {
            marker.setAnimation(null);
         } else {
           marker.setAnimation(google.maps.Animation.BOUNCE);
             }
            console.log(marker);

});
for(var i=0;i
这是一个常见错误。您可能认为循环会将单击事件绑定到每个标记,但实际上并非如此。由于单击事件发生在创建标记之后,因此它仅适用于最后一个标记。您必须将必要的参数传递给函数并在其中创建标记

顺便说一句,locationarray在这里不是一个函数,只是一个数组

工作小提琴:

var映射;
google.maps.event.addDomListener(窗口,“加载”,函数(){
var map=new google.maps.map(document.getElementById(“map_div”){
中心:新google.maps.LatLng(33.808678,-117.918921),
缩放:14,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
函数createMarker(locationArray){
var位置=locationArray.location;
var title=locationArray.title;
var marker=new google.maps.marker({
位置:地点,,
地图:地图,
标题:标题,,
动画:google.maps.animation.DROP
});
google.maps.event.addListener(标记'click',函数(){
if(marker.getAnimation()!==null){
marker.setAnimation(null);
}否则{
setAnimation(google.maps.Animation.BOUNCE);
}
});
}
locationArray=[
{地点:新google.maps.LatLng(33.808678,-117.918921),标题:“1”},
{地点:新google.maps.LatLng(33.818038,-117.928492),标题:“2”},
{地点:新google.maps.LatLng(33.80333,-117.915278),标题:“3”}
];
对于(var i=0;i