2017-05-31 4 views
-1

私はGoogleマーカーが置かれているGoogleマップを持っています。マーカーの配置はうまく機能します。しかし、私がマーカーをクリックすると、アドレスが情報ウィンドウに表示されます。住所、経度、緯度はmodel.jsから変数myLocationsにロードされます。JavaScript:選択されたGoogleマーカーを取得

EDIT:現在、マーカーをクリックすると、myLocationsの最後のオブジェクトのアドレスが返されます。しかし、私はクリックされた人のmyLocations.adressを取得したいと思います。

var markerspots; 
var spot; 
var j; 
for (j = 0; j < myLocations.length; j++){ 

    spot = { 
     lat: parseFloat(myLocations[j].lati), 
     lng: parseFloat(myLocations[j].long) 
    }; 

    contentString = myLocations[j].adress; 

    markerspots = new google.maps.Marker({ 
     position: spot, 
     map: map, 
     icon: markerspot, 
     content: contentString, 
     id: j 
    }); 

    var infowindow = new google.maps.InfoWindow(); 

    google.maps.event.addListener(markerspots, "click", (function(marker) { 
     return function(evt) { 
      infowindow.setContent(contentString); 
      infowindow.open(map, markerspots); 
     } 
    })(markerspots)); 
} 

私は多くの解決策を見つけましたが、それらのどれも理解できません。では、クリックしたマーカーのコンテンツを情報ウィンドウに表示するにはどうすればよいですか?

おかげ

+1

あなたは 'infowindow'と' map'を作成するのですか? – duncan

+0

@duncanのinfowindowは下の3番目にあり、var infowindow = new google.maps.InfoWindow()です。マップはちょうど投稿されたコードの部分で見つけることができませんが、上記のその部分はこのように作成します:var map = new google.maps.Map(document.getElementById( "karte")、kartenoption); –

+0

jsfiddleを投稿してください –

答えて

0

さて、あなたはあなたのためのループで作成された最後の1に設定されているあなたのcontentStringに、アクセスしています。
クリックしたマーカーのコンテンツプロパティは、に格納されています。です。

ので

google.maps.event.addListener(markerspots, 'click', function() { 
    console.log(this.content); 
}); 

は、トリックを行う必要があります。ここ

例:https://jsfiddle.net/4tpnh00u/

+0

これは現場にあった!かなり明白な間違い...しかし、 "これは"示された内容を固定したが、位置を固定しなかった。情報ウィンドウは、データベースから最後に読み込まれたオブジェクトの位置に常に表示されます。私はそれをinfowindow.open(地図、これ)で修正しました。 –

関連する問題