4

開発者APIv3からGoogleマップを作成しています。これには、MsSQLデータベースにクエリを実行するColdFusionから動的に作成されたマーカーが含まれています。

 <cfloop query="One">
 <script>locations[<cfoutput>#One.userID#</cfoutput>
] = new google.maps.LatLng(<cfoutput>#One.latLng#</cfoutput>);
 </script>
 </cfloop>

地図の下のボックスに住所の詳細を表示したり、ページの下のボタンをクリックしたときにマーカーを強調表示したりできるように、マーカーがクリックされたときにそれを認識する方法が必要です。

4

3 に答える 3

5

通常、独自のカスタム プロパティをマーカーに割り当てます。何かのようなもの:

function markerClicked(e) {
    console.log('Marker ' + marker.myData + ' has been clicked');
}
var marker = new google.maps.Marker(...);
marker.myData = 1; //this could be arbitrary data or even another object
google.maps.event.addListener(marker, 'click', markerClicked);

ただし、Google Maps API オブジェクトにカスタム データを追加することにはリスクがあります。Google のコードは難読化されており、内部 (文書化されていない) プロパティは変更される可能性があり、実際に変更されます。既存のプロパティや将来のプロパティと競合しないように、プロパティに名前を付けてください。ヒント: 3 文字を超えるプロパティ名を選択してください。

マップ コードを縮小/コンパイル/圧縮する場合は、追加の考慮事項があります。

于 2013-03-08T20:34:38.643 に答える
4

どうですか :

google.maps.event.addListener(marker, "click", function (e) {
    var clicked = this;
    //...
});
于 2013-10-11T14:31:14.827 に答える
0

これは、ドキュメントでかなり完全に文書化/説明されています。

https://developers.google.com/maps/documentation/javascript/overlays#InfoWindows

マーカーを作成するときは、このようにマーカーにdomリスナーを追加します

  google.maps.event.addListener(marker, 'click', function() {
     infowindow.open(map,marker);
  });
于 2013-03-08T17:13:34.640 に答える