0

Google マップ上のマーカーに解析される動的 json フィードがあります。

解析関数は次のようになります。

function parse_json(json) {

      // alert('start parse: '+json.length);
      if (json.length > 0) { 
        var markers = [];
        for (i=0; i<json.length; i++) {
          var report = json[i];
          //alert(report.longitude +','+report.latitude);
          // addLocation(report); 
          markers[i] = new google.maps.Marker({
            map: map,
            position: new google.maps.LatLng(report.latitude, report.longitude),
            pop_title: report.area1.name,
            pop_body: '<b><a href="/spot/'+ report.spot.slug +'">'+ report.spot.name +'</a></b>'+
                      '<br>'+ report.report_description,
            draggable: false,
            title: 'title',
            zIndex: i,
            icon: '/images/map_icon.png'
          });
          markers[i].metadata = {type: "point", id: report.id};

          google.maps.event.addListener(markers[i], 'click', onMarkerClick);

      }
    };

作成されたマーカーにメタデータ情報を追加したので、その ID は report.id ですがgoogle.maps.event.trigger(SOMETHING_HERE, 'click');、マップの外側のボタンが押されたときに、構造体を使用して特定のマーカーでクリック イベントをトリガーしたいと考えています。オブジェクト名を取得するにはどうすればよいですか、またはオブジェクトの ID を使用してこれを行う方法はありますか?

ありがとう!

4

1 に答える 1

1

markers関数よりも高いスコープで配列を宣言するparse_jsonと、後で次のように参照できるようになります。

var markers = new Array();
function parse_json(json) {
    //code removed for brevity
}

その後、クリックイベントを発生させたいマーカーを見つける必要がある場合は、次のidように使用できます。

for ( var i = 0; i < markers.length; i++ ) {
    var mkr = markers[i];
    if ( mkr.metadata.id === idYouAreSearchingFor ) {
        //do whatever is needed here and fire your event
    }
}
于 2012-07-11T19:52:54.320 に答える