2016-07-18 3 views
-1

Googleマップのマーカーに問題があります。実際に私の地図では、イベントリスナーで複数のマーカーを追加してクリックでイベントをトリガーしましたが、すべて同じ機能をトリガーするように継ぎ目があります。Googleマップマーカーイベントリスナーをクリック

for(var j = 0; j < lat_long.length; j ++) { 
markers[j] = new google.maps.Marker({ 
    position: latitudeAndLongitudeOne, 
    icon: self.icon, 
    scaledSize: new google.maps.Size(50, 50), 
    map: self.map, 
    title: lat_long[i].name 
}); 

google.maps.event.addListener(markers[j], 'click', function() { 
    alert(j); 
}); 

}

I Xが挿入された最後の項目のIDであると、アラート(X)を有しています。私がクリックするマーカーは何でも。

ありがとう

答えて

3
var markers= []; 
for(var i = 0; i < lat_long.length; i ++) { 
    var marker = new google.maps.Marker({ 
     position: latitudeAndLongitudeOne, 
     icon: self.icon, 
     scaledSize: new google.maps.Size(50, 50), 
     map: self.map, 
     title: lat_long[i].name 
    }); 
    marker.addListener('click', function() { 
     alert(marker.title); 
    }); 
    markers.push(marker); 
} 

、私はわかりませんが、あなたが

1

これは、マーカーを定義することができないためです。グローバル配列を作成し、作成された各マーカーのインスタンスをその配列に挿入します。

だから: は、すべてのマーカーについては、各作成されたマーカーの参照を保持する配列を定義:

var markers = []; //Global Marker Array 
function printMarker(lat, lng){ 
    var marker = new google.maps.Marker({ 
     position: {lat: lat, lng: lng}, 
     icon: icon, 
     map: map 
    }); 
    markers.push(marker); 
} 

は今、あなたはちょうどあなたループwitinマーカーの現在の基準にclickListenerを追加する必要があります。

+0

あなたは、私は、配列を使用見ることができるように私は、全体のコードの一部を書いてすみません試すことができ、宣言は、私が書いた部分ではありません事実私は地図上にマーカーを持っていますか?マップ上にマーカーを置くことは問題ではありません!問題は、「正しい」コードをクリックしてトリガーできることです。 – Jeelig

+0

私は自分自身を明確にenougth、私の貧しい英語を許すかどうかわからない – Jeelig