Jquery mobile с помощью плагина gmap v3 - обновленные маркеры - PullRequest
2 голосов
/ 28 февраля 2012

У меня есть мобильный сайт jquery, пытающийся добавить gmap (v3) с динамическими маркерами:

 bindMap: function () {

    var markers = mapArray;  //global var with coordinates

    $('#mapContent').gmap({ 'callback': function () {
        var self = this;           
        $.each(markers, function (i, m) {
            if (markers[i][0] && markers[i][1]) {

                self.addMarker({ 'position': new google.maps.LatLng(markers[i][0], markers[i][1]), 'bounds': true }).click(function () {
                    self.openInfoWindow({ 'content': markers[i][2] }, this);
                });
            }
        });
    }
    });

} 

Он загружает мне карту с маркерами, но как только я меняю маркеры и возвращаюсь к тому же кодучтобы отобразить эту карту, она пропускает функцию обратного вызова и не отображает новую карту с новыми маркерами.Я пытался дозвониться до $('#mapContent').gmap('refresh') раньше или $('#mapContent').gmap('clear', 'markers'), но все еще не отображаются новые маркеры.

1 Ответ

3 голосов
/ 29 февраля 2012

Я не совсем уверен, что вы имеете в виду, «вернуться к тому же коду», но не могу использовать один и тот же объект карты.

У меня был бы метод, который создает карту, и метод, который добавляет / обновляет маркеры

function addMarkers(markers, clearOld) {

   if(clearOld) $('#mapContent').gmap('clear', 'markers');

   $.each(markers, function(i, m) {
      $('#mapContent').gmap('addMarker', {
         'position': new google.maps.LatLng(m.lat, m.lng),
         'bounds':true,
         'id' : m.id,
         'icon' : 'img/marker.png'
     },function(map,marker) {
         $(marker).click(function(){
           //do something
         });
     });
   });

}

Так что просто повторно используйте карту и вызывайте addMarkers, когда хотитедобавить новые маркеры на карту

...