Очень странное поведение!
С одними координатами работает, а с несколькими нет ;(
Инициализируем карту:
ymaps.ready(init);
var myMap;
function init(){
myMap = new ymaps.Map("map", {
center: [56.49540919, 84.95061710],
zoom: 12,
controls: ['zoomControl']
});
}
Пишем функцию перезагрузки карты (для новых координат, в
responseCoords приходят новые координаты. Тут и происходит ошибка). Говорит, что нет
myMap (undefined), как это нет, она выше объявлена ;(:
function reloadYandexMap(responseCoords)
{
myMap.geoObjects.removeAll();
for (var i = 0; i < responseCoords.length; i++) {
myMap.geoObjects.add(new ymaps.Placemark(responseCoords[i]));
}
myMap.setBounds(myMap.geoObjects.getBounds());
}
Отправляем
AJAX запрос, для получения новых координат, после того как их получим, сделаем перезагрузку карты:
var responseCoords = [];
$.ajax({
type: 'POST',
url : '/ajax/getCoordsByAddress',
//async: false,
data: {
'arrStreets': arrStreets
},
dataType: 'json',
success: function(res){
if(res.success)
{
$.each( JSON.parse(res.msg), function( key, val )
{
responseCoords.push(val);
});
reloadYandexMap(responseCoords);
}
}
});
Когда приходит вот такое дело:
[56.458592, 84.947361]
И происходит ошибка (заголовок топика)
Но! Если приходит вот так:
[56.458537, 84.948367]
[56.49848, 84.968858]
[56.459383, 84.958959]
[56.458592, 84.947361]
[56.510298, 85.029584]
[56.475678, 85.008743]
[56.461153, 84.959003]
То все метки ставятся на карту! Все отлично. Обращаю внимание, что "ошибочные" координаты
присутствуют в этом массиве.
Решение:
var myMap;
function init(){
myMap = new ymaps.Map("map", {
center: [56.49540919, 84.95061710],
zoom: 12,
controls: ['zoomControl']
});
}
function reloadYandexMap(responseCoords)
{
myMap.geoObjects.removeAll();
for (var i = 0; i < responseCoords.length; i++) {
myMap.geoObjects.add(new ymaps.Placemark(responseCoords[i]));
}
//myMap.setBounds(myMap.geoObjects.getBounds());
}
ymaps.ready(function(){
init();
var arrStreets = [];
$('#streets-box span').each(function(ind, val){
arrStreets.push($(val).text());
});
var responseCoords = [];
$.ajax({
type: 'POST',
url : '/ajax/getCoordsByAddress',
async: false,
data: {
'arrStreets': arrStreets
},
dataType: 'json',
success: function(res){
if(res.success)
{
$.each( JSON.parse(res.msg), function( key, val )
{
responseCoords.push(val);
});
reloadYandexMap(responseCoords);
}
}
});
});