0

マップ上に一連のマーカーを作成しました。そして、キャンバスの外にこれらのマーカーのリストがあります。これらについて学び、それらの間の相互作用を作成したいと思います。

私のマーカーは次のように作成されます:

var markers = [];
var marker = [];
var i;  

// var places is an array of locations
for (var i=0;i<places.length;i++) {

        var place = places[i];
        var latLng = new google.maps.LatLng(place[1], place[2]);

         marker[i] = new google.maps.Marker({
            position: new google.maps.LatLng(place[1], place[2]),map: map
        });

        marker[i].set('id','marker_'+i);

        markers.push(marker[i]);

}

おそらく、MVCObjectを使用してマーカーの ID を設定できると思いました。たとえば、マーカーの ID は「marker_1」になり、次のような方法で jquery を使用して DOM でアクセスできます。

$('#marker_0').doSomething();

しかし、そうではないようです。

各マーカーに一意の ID を与えて、マップ キャンバスと API の外側の DOM にアクセスするにはどうすればよいですか?

4

1 に答える 1

0

私の質問に答えて、この答えはここにあります

Google マップの初期化関数内に関数 var を作成しました。

var markers = [];
var marker = [];
var i;  

// var places is an array of locations
for (var i=0;i<places.length;i++) {

    var place = places[i];
    var latLng = new google.maps.LatLng(place[1], place[2]);

     marker[i] = new google.maps.Marker({
        position: new google.maps.LatLng(place[1], place[2]),map: map
    });

    marker[i].set('id','marker_'+i);

    markers.push(marker[i]);


    var mouseoverListener = (function(i) {
        return function() {

            alert[i];

        };
    })(i);

}

そして、次のようにaddDomListenerを開始しました。

     google.maps.event.addDomListener(document.getElementById('place'+i+''), 'mouseover', mouseoverListener);

リスト項目にカーソルを合わせると、想定されていたマーカーのインデックスがアラートされたので、alert[i] の代わりに各マーカーの制御にアクセスできました。

于 2013-03-07T13:01:17.407 に答える