2016-04-10 11 views
0

gmap3 google mapsライブラリでは、インフォボックスでマーカーを作成する関数を作成しようとしています。gmap3で間違ったマーカーが取得されました

http://gmap3.net/api-infowindow.html

function addMarker(map, marker, content) { 
    map.marker(marker) 
    .infowindow({ 
     'content' : content 
    }) 
    .then(function (infowindow) { 
     var map = this.get(0); 
     var marker = this.get(1); // <---- this gets the first marker on both times I call addMarker, i.e. uluru 
     marker.addListener('click', function(event, data) { 
      infowindow.open(map, this); 
     }); 
    }); 
} 

$(document).ready(function() { 

    var uluru = {lat: -25.363, lng: 131.044}; 

    var map = $('#map') 
     .gmap3({ 
     zoom: 4, 
     center: uluru 
     }); 

    addMarker(map, { 
     position: uluru 
    }, "text"); 
    addMarker(map, { 
     position: {lat: 48.8620722, lng: 2.352047} 
    }, "text2"); 
}); 

これは私が持っているものであるが、問題がある、私は(私はコード内のコメントを入れて)マーカーを取得しようとトップで、それが参照しているようです間違ったマーカー。私はそれを両方とも呼びます、私は最初のマーカーを参照しています。その結果、地図上の最初のマーカーをクリックすると、両方の情報ウィンドウがそのマーカーに表示されます。

誰かが間違っていることを知っていますか?

「取得」機能が最初からチェーンの結果を取得おかげ

答えて

0

、インデックスが変更されることはありません。使用して、関数内のローカル

ストア、それを「それから」

function addMarker(map, marker, content) { 
    var gmMarker; 
    map 
     .marker(marker) 
     .then(function (m) { 
     gmMarker = m; 
     }) 
     .infowindow({ 
     'content' : content 
     }) 
     .then(function (infowindow) { 
     var map = this.get(0); 
     gmMarker.addListener('click', function(event, data) { 
      infowindow.open(map, this); 
     }); 
     }); 
}