【发布时间】:2014-03-28 02:01:39
【问题描述】:
我正在尝试为大量 Google 标记创建 DROP 动画。 我不希望 300 个(左右)标记同时掉落,所以我进行了一些搜索并找到了“setTimeout”功能。
我一直按照这个问题的说明进行操作:
Animation of google markers on map load with timeout
我按照与上面帖子中相同的步骤进行操作,但似乎无法让代码在我的示例中运行。
这是我认为可行的方法......
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 6,
center: new google.maps.LatLng(54.059170, -4.797820),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map,
icon: EuroPCmarker,
});
(function (i, marker) {
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
});
})(marker, i);
if(i++ < nc.length) {
setTimeout(function() {addmarker(i)}, 100);
}
}
addmarker(0);
我的代码与我提到的链接中的帖子略有不同,但我不明白为什么无论如何它都不应该工作。
这是我的工作代码(一次性删除所有标记)...
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 6,
center: new google.maps.LatLng(54.059170, -4.797820),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map,
icon: EuroPCmarker,
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
JavaScript 可能非常无情,很难排除故障,因为如果你犯了一个错误,地图就无法一起显示,我真的很茫然。
知道我做错了什么吗?
#firstpost :)
【问题讨论】:
-
你能贴出设置
location的代码吗?我已经为这个问题启动了JSFiddle。 -
嗨 LaughDonor,抱歉回复晚了。我已经用我的代码稍微编辑的版本更新了您创建的 JSFiddle(删除了公司名称、徽标、销售数据等)
-
您没有在 Fiddle 中将 HTML 与 Javascript 和 CSS 分开,并且在位置列表中有一个尾随逗号。
标签: javascript jquery google-maps google-maps-api-3