для каждого работает только один раз - PullRequest
1 голос
/ 22 марта 2012

Сначала позвольте мне объяснить.У меня есть несколько адресов на странице, которые я помещаю в массив.Затем я хочу просмотреть этот массив и заменить каждый адрес его долготой и широтой.

Проблема в том, что моя попытка выполняется только один раз.

$(function () {
 var addr = 0;
 var shops = [];
 var addressPoint;
 var latlng = new google.maps.LatLng(38, -97);
 var myOptions = {
     zoom: 8,
     center: latlng,
     mapTypeId: google.maps.MapTypeId.ROADMAP
 };
 map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
 window.onload = function () {
     var options = [];
     $('.address').each(function () {
         if (!$(this).is(":empty")) {
             options.push($(this).text());
             txt = $(this).text();
         } else {}
     });
     alert(options);
     $.each(options, function () {
         var addr = ("'" + this + "'");
         searchAddr(addr);
     });

     function searchAddr(addr) {
         $('#map_canvas').gmap({
             'callback': function () {
                 var self = this;
                 alert(addr);
                 self.search({
                     'address': addr
                 }, function (results, status) {
                     if (status === 'OK') {
                         addressPoint = results[0].geometry.location;
                         alert(addressPoint);
                         options = $.map(options, function () {
                             return results[0].geometry.location;
                         });
                         self.get('map').panTo(results[0].geometry.location);
                         alert(options);
                         return false;
                     }
                 });
             }
         });
     }
 };
 }(jQuery));

1 Ответ

1 голос
/ 22 марта 2012

Использовали ли вы сетевой сниффер, чтобы подтвердить, что он запускается только один раз? Потому что, похоже, вы заменяете каждое значение в списке одним значением в команде $.map. Возможно, если вы поместите адресные точки в другой массив, это поможет:

$(function () {
 var addr = 0;
 var shops = [];
 var addressPoint;
 var latlng = new google.maps.LatLng(38, -97);
 var myOptions = {
     zoom: 8,
     center: latlng,
     mapTypeId: google.maps.MapTypeId.ROADMAP
 };
 var points = [];
 map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
 window.onload = function () {
     var options = [];
     $('.address').each(function () {
         if (!$(this).is(":empty")) {
             options.push($(this).text());
             txt = $(this).text();
         } else {}
     });
     alert(options);
     $.each(options, function () {
         var addr = ("'" + this + "'");
         searchAddr(addr);
     });

function searchAddr(addr) {
         $('#map_canvas').gmap({
             'callback': function () {
                 var self = this;
                 alert(addr);
                 self.search({
                     'address': addr
                 }, function (results, status) {
                     if (status === 'OK') {
                         addressPoint = results[0].geometry.location;
                         alert(addressPoint);
                         points.push(addressPoint);
                         });
                         self.get('map').panTo(addressPoint);
                         alert(points);
                         return false;
                     }
                 });
             }
         });
     }
};
 }(jQuery));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...