0

マーカーが開いたときにイベントを取得する方法はありますか? マップには約 2,000 のマーカーがあり、それぞれがインフォボックスに独自のストリートビューを持っています。ストリートビューは Google API にソースがあるため、ページの読み込みが遅すぎます (2000 以上のストリートビュー画像が一瞬で読み込まれます)。このようなもの(非同期ロード)はありますか?

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

2 に答える 2

1

インフォボックスのコンテンツを拡張するのに適した、インフォボックスの domready イベントがあります。

google.maps.event.addListener(infoboxObject, 
                              'domready', 
                               function(){/*do something*/});
于 2012-11-11T02:00:29.273 に答える
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);

ここに画像の説明を入力

于 2012-11-11T02:49:42.387 に答える