2016-04-10 4 views
0

В gmap3 библиотеке карт google, я пытаюсь создать функцию, которая делает маркер с помощью infowindow.Неверный маркер, полученный в 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); 
     }); 
     }); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^