Дано: на странице есть карта с несколькими маркерами. Есть список ссылок с координатами этих маркеров, по клику отрабатывает onclick=changeCenter(x,y)
Адрес 1
function changeCenter(x,y) {
myMap.setCenter(x, y);
}
переменные x и y передаются нормально, функция их съедает. Но карта тупо сбрасывается и ничего не происходит. Функцию подключил сразу после init карты. Кто подскажет в чем беда? Так мало примеров setCenter в интернете. Допускаю что просто я не очень сообразительный)
на всякий добавлю инициализацию карты, может там что накосячил. Для пробы пока только с одной точкой пытаюсь разобраться
ymaps.ready(init);
var myMap,
myPlacemark;
function init ()
{
myMap = new ymaps.Map("myMapId",
{
center: ["x", "y"],
zoom: 18,
controls: ["zoomControl", "fullscreenControl"]
});
myMap.geoObjects
.add(new ymaps.Placemark
(
["x", "y"],
{
balloonContent: "Адрес 1"
}
))
myMap.behaviors.disable("scrollZoom");
}
//ну и сама функция
function changeCenter(x,y) {
myMap.setCenter(x, y);
}
Метод setCenter
- устанавливает центр и коэффициент масштабирования
карты. Центр задается в географических координатах. Возвращает ссылку
на себя.
Ваша функция выглядит следующим образом:
function changeCenter(x, y) {
myMap.setCenter(x, y);
}
В документации яндекса к методу setCenter
написано следующее:
{Map} setCenter(center[, zoom[, options]])
Нас интересует первый параметр:
Параметр: center
(обязательное для заполнения поле)
Значение по умолчанию: нет
Тип: Number[]
Описание: Геокоординаты центра карты
Откуда следует, что в метод нужно передавать массив из 2-х чисел (чтобы это был массив - нужны квадратные скобки [x, y]
). Думаю в этом и заключается причина сброса карты (некорректная работа, которая не ожидалась).
Касаемо Placemark
и Map
, там где вы передаете строки, что-то мне подсказывает, что туда нужно передавать не строки в виде ["x", "y"]
, а координаты в формате чисел (кстати тут указали верно - массив, но вот только строк).
Полезные ссылки:
setCenter
Несколько примеров из документации, по использованию методов.
Инициализация карты из известных центра и уровня масштабирования:
var myMap = new ymaps.Map('map', {
center: [55.74954, 37.621587],
zoom: 10,
// включаем масштабирование карты колесом
behaviors: ['default', 'scrollZoom']
});
Создание метки:
var placemark = new ymaps.Placemark([48, 40], {
balloonContent: '<img src="http://img-fotki.yandex.ru/get/6114/82599242.2d6/0_88b97_ec425cf5_M" />',
iconContent: "Азербайджан"
}, {
preset: "twirl#yellowStretchyIcon",
// Отключаем кнопку закрытия балуна.
balloonCloseButton: false,
// Балун будем открывать и закрывать кликом по иконке метки.
hideIconOnBalloonOpen: false
});
geoMap.geoObjects.add(placemark);
Установка центра:
myMap.setCenter([40, 50], 3, {
checkZoomRange: true
});
Из примеров видно, что значения координаты метки передаются в виде массива двух чисел: [40, 50]
, [48, 40]
и [55.74954, 37.621587]
. Поэтому меняйте ваши ["x", "y"]
- строки на числа, а в метод setCenter
- передавайте массив.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаюсь привести выгрузку из Oracle в NodeJS к нормальному JSON вида: { "name": "Bob", "age": 21 }