我正在尝试加载显示 5000 个可点击标记的 Google Maps v3。我的 JS 每个地方包含 10 行:
var myLatlng_4821 = new google.maps.LatLng(43.0754329,-71.4699752);
var contentString_4821 = "<b>Place 1</b>";
var infowindow_4821 = new google.maps.InfoWindow({content: contentString_4821});
var marker_4821 = new google.maps.Marker({
position: myLatlng_4821,
map: map,
icon: image
});
google.maps.event.addListener(marker_4821, 'click', function() {
infowindow_4821.open(map,marker_4821);
});
所以它给了我一个 50 000 行的 js (5MB)。我很想缓存它,但 heroku 不允许页面加载超过 30 秒,所以我什至无法缓存它一次。
你有什么技巧可以更快地加载这个页面吗?我只设法在本地完成(需要 45 秒~)。我没有其他东西要加载。我使用 RoR。
非常感谢!
解决方案(这很酷)。
var myLatlng = [];
var infowindow = [];
var marker = [];
function MakeInfoWindowEvent(map, infowindow, marker) {
return function() {
infowindow.open(map, marker);
};
}
for (var i=0;i < places.length;i++)
{
myLatlng[i] = new google.maps.LatLng(places[i][0],places[i][1]);
infowindow[i] = new google.maps.InfoWindow({
content: places[i][2]
});
marker[i] = new google.maps.Marker({
position: myLatlng[i],
map: map
});
google.maps.event.addListener(marker[i], 'click', MakeInfoWindowEvent(map, infowindow[i], marker[i]))
}
}