2012-11-11 137 views
0

有什么办法如何获得标记打开时的事件?在地图上,我有大约两千个标记,每个标记都有自己的信息框。 Streetview在google api中有源代码,因此页面加载速度太慢(一次加载2000多个streetview图像)。有这样的事情(异步加载)?谷歌地图异步加载街景

$(window).bind('eventWhenMarkerWasOpened', function(){ 
    $('#infowindow').append('<img src="here is path to streetview google api" />'); 
}); 
+0

为什么你下载的街景图片被点击标记过吗? “标记打开”是什么意思?它是如何“打开”的?通过点击?通过鼠标悬停? – geocodezip

回答

1

有一个domready中事件的信息框应该是扩展信息框的内容的好去处:

google.maps.event.addListener(infoboxObject, 
           'domready', 
           function(){/*do something*/}); 
+0

好吧,这真的**真棒** :)谢谢! –

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); 

enter image description here

+0

谢谢你的回答,但Dr.Molle有解决方案,对我的情况更好。这也是非常棒的解决方案.. –