打开标记时有没有办法获取事件?在地图中,我有大约两千个标记,每个标记在信息框中都有自己的街景。 Streetview在google api中有源,因此页面加载速度太慢(一瞬间加载2000多个街景图像)。有这样的东西(异步加载)?
$(window).bind('eventWhenMarkerWasOpened', function(){
$('#infowindow').append('<img src="here is path to streetview google api" />');
});
答案 0 :(得分:1)
信息框有一个domready-event,应该是扩展信息框内容的好地方:
google.maps.event.addListener(infoboxObject,
'domready',
function(){/*do something*/});
答案 1 :(得分:1)
如何使用FusionTableLayers代替普通标记? FusionTables使您可以快速加载大量标记,并且可以使用一些SQL。
var infoWnd, map;
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(41.850033, -87.6500523),
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
infoWnd = new google.maps.InfoWindow();
var layer = new google.maps.FusionTablesLayer({
query: {
select: '\'Geocodable address\'',
from: '1mZ53Z70NsChnBMm-qEYmSDOvLXgrreLTkQUvvg'
},
suppressInfoWindows : true
});
layer.setMap(map);
google.maps.event.addListener(layer, "click", onLayerClicked);
}
function onLayerClicked(evt) {
var imgUrl = "http://maps.googleapis.com/maps/api/streetview?" +
"size=400x300&" +
"sensor=false&" +
"location=" + evt.latLng.toUrlValue();
infoWnd.setPosition(evt.latLng);
infoWnd.setContent("<img src='" + imgUrl + "'>");
infoWnd.open(map);
return false;
}
google.maps.event.addDomListener(window, "load", initialize);