0

listing_id, lat, lngを使用して値を持つ AJAX データを受け取る Web ページがあります$.getJSON。コールバック関数は、これらの一連の値を受け取り、 のセットごとに Google マップ マーカーを作成しますlisting_id, lat, lng。次に、マーカーが配列にプッシュされ、そのマーカーが配列にプッシュさmarkerslisting_idますmarkersListingId

var latLng = new google.maps.LatLng(json[i].lat, json[i].lng);
var marker = new google.maps.Marker({
                position: latLng,
                icon: base_url + 'images/template/markers/listing.png',
            });
markers.push(marker);
markersListingId.push(json[i].listing_id);

問題:特定の に対応する特定のマーカーを選択したい場合、特にマーカーが削除されて配列listing_idに追加される複雑な状況で問題が発生します。markers

配列内のすべてのマーカーの ID をmarkersListingIdループし、ループのインデックスiを使用して配列内のマーカーを取得するfor ループを作成できますmarkersが、これにより追跡が非常に難しくなります。

var id_to_select = 1234;
for(var i = 0; i < markersListingId; i++) {
    if(markersListingId[i] == id_to_select) {
        markers[i].setMap(null);
    }
}

質問:を使用して特定のマーカーを簡単に選択できるように、マーカーを保存するにはどうすればよいlisting_idですか?

4

1 に答える 1

0

マーカーを作成するとき、配列を使用する代わりにハッシュ テーブルを使用できますか?

http://jsfiddle.net/j9J8x/

    var markers = {};

    //id goes in place of 1234
    n = 1234;
    markers[n] = new google.maps.Marker({
      map: map,
      position: new google.maps.LatLng(0,0)
    });

    s = '2234'
    markers[s] = new google.maps.Marker({
      map: map,
      position: new google.maps.LatLng(20,0)
    });

    google.maps.event.addListener(map, 'click', function(event) {
      k = 1234;
      markers[k].setMap(null);
      markers['2234'].setMap(null);
    });
  }
于 2012-04-08T02:52:20.887 に答える