Клуб API Карт

Проблема получить данные после перетаскивания метки, после перехода на API 2.1

barkar1979
29 ноября 2013, 12:25

 

var parCentr = myMap = new ymaps.Map('map_admin', {center: [parseFloat(parCentr[0]),parseFloat(parCentr[1])], zoom: parseFloat(resEd.zoom), behaviors: ['default', 'scrollZoom'], controls: ['searchControl', 'typeSelector', 'trafficControl', 'fullscreenControl'], type: 'yandex#map'});

myMap.controls.add('rulerControl', { position: {bottom: '10px', right: '10px'} }),

coords = [parseFloat(parMet[0]),parseFloat(parMet[1])],
myPlacemark = new ymaps.Placemark(coords, { balloonContent: resEd.street }, {preset: chUrl[1]+'#icon',draggable: true});
myMap.geoObjects.add(myPlacemark);

//Отслеживаем событие перемещения метки
myPlacemark.events.add('dragend', function (e) {
coords = this.geometry.getCoordinates();console.dir(coords);
savecoordinats();
}, myPlacemark);

//Отслеживаем событие щелчка по карте
myMap.events.add('click', function (e) {
coords = e.get('coords'); console.dir(coords);
savecoordinats();
});

//Ослеживаем событие изменения области просмотра карты - масштаб и центр карты
myMap.events.add('boundschange', function (event) {
if (event.get('newZoom') != event.get('oldZoom')) {
savecoordinats();
}
if (event.get('newCenter') != event.get('oldCenter')) {
savecoordinats();
}
});

//Функция для передачи полученных значений в форму
function savecoordinats (){
var latlongmet_ch = [coords[0].toFixed(6),coords[1].toFixed(6)];
myPlacemark.getOverlay().getData().geometry.setCoordinates(latlongmet_ch);
$('#latlongmet').val(latlongmet_ch);
$('#mapzoom').val(myMap.getZoom());
var center = myMap.getCenter();
var new_center = [center[0].toFixed(6), center[1].toFixed(6)];
$('#latlongcenter').val(new_center);
}

 

  

Выдает ошибку в myPlacemark.getOverlay().getData().geometry.setCoordinates(latlongmet_ch);

Мол: Object has not method getData! 

5 комментариев
Подписаться на комментарии к посту
Добрый день! getOverlay() теперь возвращает объект vow.Promise(). То есть предоставляется асинхронный интерфейс доступа к оверлею. Это сделано чтобы иметь возможность подгружать внешний вид геообъектов для сокращения размеров подключаемого изначально API.
В вашем случае правильней будет устанавливать координаты через
myPlacemark.geometry.getPixelGeometry().setCoordinates(latlongmet_ch);
так как пиксельная геометрия геометрии геообъекта и геометрия оверлея одна и та же.

Решил проблему так:

myPlacemark.geometry.getCoordinates();

myPlacemark.geometry.setCoordinates(latlongmet_ch);

 

В одну строку выдает ошибку:

myPlacemark.geometry.getCoordinates().setCoordinates(latlongmet_ch);

 

зачем нужно myPlacemark.geometry.getCoordinates();?

Да туплю! Убрал спасибо за помощь.:-)