私はGoogle Maps v3を使用しており、自分のページにマップを配置しています。ユーザーはいくつかのリストからデータの束を選択し、私の地図は私のdbのデータで更新され、選択されたデータのポリラインを持つ地図がユーザに提供されます。データはjqueryを使用してdbから取得され、jsonとして返されます。私のコードはjsonを解析し、ポリラインを描画します。私のjsonには、データID、lat、lngが含まれています。正常に動作します。ポリラインIDを取得する
ここで、ユーザーがポリラインポイントの1つをクリックできるようにして、データベースからそのデータIDの追加データを取得しますが、クリックしたIDを特定するのに問題があります。誰かがその行でクリックされたIDを特定するための迅速な解決策を持っていますか?
これはポリラインクリックイベントのリスナーです。それはうまく反応することができますが、私は私の追加データを得ることができるようにクリックされた "何"点を特定するのか分からない。以下の例では、ポリラインの最初の要素のIDを取得しているので、配列にアクセスし、イベントが発生していることがわかります。私がクリックした特定のポイントを見つけることができればいいだけです。 私は私のjsonを得る。私のテストセットは、このように見える8,349ポイントを持っています。
{
"id": 1590065,
"lat": 37.07318,
"lng": -88.563132}
,{
"id": 1590066,
"lat": 37.07307,
"lng": -88.563002}
,{
"id": 1590067,
"lat": 37.072967,
"lng": -88.562875}
,{
"id": 1590068,
"lat": 37.07287,
"lng": -88.56275}
,{
"id": 1590069,
"lat": 37.072779,
"lng": -88.56263}
,....
それから私は、データを解析し、私の座標に割り当てます。
vesselPathCoordinates = JSON.parse("[" + data + "]");
次にポリラインを構築します。
vesselPath = new google.maps.Polyline({
path: vesselPathCoordinates,
strokeColor: ''#FF0000'',
strokeOpacity: 1.0,
strokeWeight: 1.5
});
google.maps.event.addListener(vesselPath, 'click', function(event){
console.log(vesselPathCoordinates[0].id);
});
ユーザーがライン上の特定のポイントをクリックすると、クリックしたJSONのどのIDを知りたいのですか。言い換えれば、行のどの緯度と経度がイベントを引き起こしたのか。
あなたがイベントvar addListenersOnPolyline = function(polyline, myJsonData) {
google.maps.event.addListener(polyline, 'click', function (event) {
window.open(myJsonData.myData);
});
に必要と日付を渡すポリラインにあなたはlistenrを追加するための関数を宣言することができます
申し訳ありません。 "vesselPath"は私のポリラインで、 "vesselPathCoordinates"は私の座標配列です。 – ScottM