Клуб API Карт

После поиска по geocode не срабатывает draggable у Placemark

ZetRider
11 декабря 2012, 23:29

Добрый день, пишу небольшую функцию для указания точки на карте администратором сайта.

 

Админ ищет город, далее может выставить мышкой точку чтобы мы записали произвольные коардинаты.

Все работает, но не могу понять почему установленный Placemark не двигается, хотя у него draggable = true.

 

ymaps.ready(init);


function init () {
var ttMap = new ymaps.Map("ttMap", {
center: [55.76, 37.64],
zoom: 11
});


$('.ttMap_search').submit(function () {
var search_query = $('.ttMap_search_query').val();

ymaps.geocode(search_query, {results: 1}).then(function (res) {
if (res.geoObjects.getLength()) {
var point = res.geoObjects.get(0);

ttPlacemark = new ymaps.Placemark([point.geometry.getCoordinates()], {
hintContent: 'Подвинь меня!'
}, {
draggable: true
});

ttMap.geoObjects.add(ttPlacemark);
ttMap.panTo(point.geometry.getCoordinates(), {
flying: false
});
}


});
return false;
});
}

 

 

Спасибо.

5 комментариев
Подписаться на комментарии к посту

удивительно что вообще работает

замени

ttPlacemark = new ymaps.Placemark([point.geometry.getCoordinates()]

на 

ttPlacemark = new ymaps.Placemark(point.geometry.getCoordinates()

Упс, спасибо! Все работает.

Есть ли callback у передвигаемой точки? Нужно получить ее коардинаты когда она установлена.

надо слушать на ней dragend

ttPlacemark.events.add('dragend', function (e) {

    e.get('target') // ttPlacemark

        .geometry.getCoordinates();

});

Большое спасибо!

 

В моем случаи метки добавляются столько раз, соклько я нажму на поиск. Как будет правильно применить removeOverlay чтобы добавлялась только 1 метка?

Правильно - добавлять результаты не на прямую в myMap.geoObjects,

а в отдельную коллекцию searchResults и уже она должна быть добавлена в myMap.geoObjects, при каждом новом поиске тебе надо перед добавлением объектов в нее, вызывать у этой коллекции метод removeAll