2

私のページでは、緯度、経度、情報ウィンドウのコンテンツがobjという名前のオブジェクトの配列に含まれています。

したがって、最初のオブジェクトのプロパティの緯度が必要な場合は、obj[0].latitudeを呼び出すことができます。

各オブジェクトのinfoWindowコンテンツは、obj[i].textに保存されます。

以下のループを使用して、緯度と経度の値をループし、マーカーとinfoWindowsを表示しています。

  for (x=1; x<=obj.length; x++)
  {
      var latlng1 = new google.maps.LatLng(obj[x].latitude, obj[x].longitude);

var marker2 = new google.maps.Marker({ position : latlng1, map : map, icon : prevIcon }); infowindow = new google.maps.InfoWindow(); info = obj[x].text; google.maps.event.addListener(marker2, 'mouseover', function() { infowindow.setContent(info); infowindow.open(map, this); });

}

上記のコードは機能しますが、すべてのinfoWindowsは最後のobj[i].textのコンテンツを表示しています。

特定のinfoWindow(obj [x] .text)のinfoWindowコンテンツをそのinfoWindowインスタンスのみに関連付けるにはどうすればよいですか?

誰かがjQueryや他の外部ライブラリを使用せずに解決策を指摘できればもっと良いでしょう。

ありがとう、

4

2 に答える 2

4

あなたに長い道のりを与えるはずです。

function attachMarker( data ) {

    var latLng = new google.maps.LatLng( data.latitude, data.longitude );

    var marker = new google.maps.Marker({
        position : latLng,
        map      : map, // global variable?
        icon     : prevIcon // global variable?
    });

    google.maps.event.addListener(marker, 'mouseover', function() {
       infowindow.setContent( data.text );
       infowindow.open(map, this);
    });

    // add marker here.

}

// afaik, you only need 1 instance of InfoWindow if you only change content.
var infowindow = new google.maps.InfoWindow();

var i = obj.length;
while ( i-- ) {
    attachMarker( obj[ i ] );
}
于 2011-02-04T12:03:36.453 に答える
0

上記のBGerrissenのコメントは大いに役立ちました。

info変数で関数クロージャを達成することができました。

次のGoogleグループの投稿でその方法を説明しています。

https://groups.google.com/group/google-maps-api-for-flash/browse_thread/thread/befeb9bf2d1ebcc9

みんな、ありがとう :)

于 2011-02-04T12:05:15.657 に答える