クリック可能な 5000 個のマーカーを表示する Google マップ 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]))
}
}