2012-04-08 8 views
0

listing_id, lat, lng$.getJSONを使用してAJAXデータを受け取るWebページがあります。コールバック関数はこれら一連の値をとり、listing_id, lat, lngの各セットのGoogleマップマーカーを作成します。次いで、マーカーはアレイmarkersおよびそのlisting_idに配列markersListingIdにプッシュされます。Googleマップマーカーを保存してから特定のマーカーを選択する

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); 

問題:私は特にマーカーが削除され、markers配列に追加されていると、より複雑な状況では、特定のlisting_idに対応する特定のマーカーを選択するときに問題が発生し

私はループがmarkers配列内のマーカーを取得するために、ループのインデックスiを使用して、その後markersListingIdアレイ内のすべてのマーカーのidをループするために持つことができますが、これは非常にトリッキーな追跡を行います。

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

質問:私は簡単にそのlisting_idを使用して、特定のマーカーを選択することができるようにがどのようにマーカーを保存することができますか?

答えて

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); 
    }); 
    } 
関連する問題