我正在建立一个成员目录,该目录以及按名称和与城镇或城市的距离的顺序列出成员,将使用 Google Maps API v3 显示在地图上。
我已经让它几乎按照我想要的方式工作,但我担心它有点慢。我已经在异步加载它,但是标记存在问题。
我希望地图加载,然后标记快速连续地出现在放置动画中。目前有一个延迟,它们都一起下降,有时它们出现在地图上然后下降,这看起来很奇怪。
我正在使用 PHP foreach 脚本(来自 MYSQL 数据库)为成员输出 javascript 数组 - 地图上可以有 10 到 400 个标记,但通常一次不超过 100 个。
为简洁起见,我在下面的示例中只包含了 4 个标记(正如我之前所说,它是从 PHP foreach 脚本输出的):
<script>
var infowindow = null;
$(document).ready(function () { initialize(); });
function initialize() {
var centerMap = new google.maps.LatLng(53.1,-2.2);
var myOptions = {
zoom: 9,
center: centerMap,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scrollwheel: false
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
setMarkers(map, sites);
infowindow = new google.maps.InfoWindow({
content: "loading..."
});
}
var sites = [
['Joe Bloggs',52.1022,-2.1070,1,"Member <a href=\"#\">Joe Bloggs</a>"],
['Peter Pan',52.2022,-2.2070,1,"Member <a href=\"#\">Peter Pan</a>"],
['Andrew Andrewson',52.0322,-2.0170,1,"Member <a href=\"#\">Andrew Andrewson</a>"],
['Peter Peterson',52.0022,-2.0070,1,"Member <a href=\"#\">Peter Peterson</a>"],
];
function setMarkers(map, markers) {
for (var i = 0; i < markers.length; i++) {
var sites = markers[i];
var siteLatLng = new google.maps.LatLng(sites[1], sites[2]);
var marker = new google.maps.Marker({
position: siteLatLng,
map: map,
title: sites[0],
zIndex: sites[3],
html: sites[4],
animation: google.maps.Animation.DROP
});
var contentString = "Some content";
google.maps.event.addListener(marker, "click", function () {
infowindow.setContent(this.html);
infowindow.open(map, this);
});
}
}
function loadScript() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?key=my-key-is-here&sensor=false&' +'callback=initialize';
document.body.appendChild(script);
}
window.onload = loadScript;
</script>
如何加快速度并使标记在页面加载后出现在拖放动画中?