Как получить новые координаты балуна на Яндекс карте?

Пытаюсь сделать приложение, которое после ввода адреса определяет координаты объекта на карте. Затем открывается карта, на которой стоит балун по этим координатам. Его можно передвинуть, если пользователь не согласен с правильностью определения координат и тогда в базу должны заноситься уже новые координаты перемещенного балуна.

Как их получить?

Что нужно добавить в этот код:

ymaps.ready(init);

function init() {
    var myMap = new ymaps.Map("map", {
            center: [55.76, 37.64],
            zoom: 10
        }, {
            searchControlProvider: 'yandex#search'
        }),

        // Создаем геообъект с типом геометрии "Точка".
        myGeoObject = new ymaps.GeoObject({
            // Описание геометрии.
            geometry: {
                type: "Point",
                coordinates: [55.754755, 37.596219]
            },
            // Свойства.
            properties: {
                // Контент метки.
                iconContent: 'Move me',
                hintContent: 'marker'
            }
        }, {
            // Опции.
            // Иконка метки будет растягиваться под размер ее содержимого.
            preset: 'islands#blackStretchyIcon',
            // Метку можно перемещать.
            draggable: true
        });

    myMap.geoObjects
        .add(myGeoObject)

}

Ответы (1 шт):

Автор решения: naivv

В обработчике события завершения перетаскивания (https://tech.yandex.ru/maps/jsapi/doc/2.1/ref/reference/GeoObject-docpage/#GeoObject__events-summary ) получаем геометрию геообъекта (https://tech.yandex.ru/maps/jsapi/doc/2.1/ref/reference/GeoObject-docpage/#field_detail__geometry ) и координаты точки (https://tech.yandex.ru/maps/jsapi/doc/2.1/ref/reference/IPointGeometryAccess-docpage/#method_detail__getCoordinates ).

Насчет сохранения в базе - вроде бы по условиям использования API Яндекс.Карт нельзя сохранять данные, полученные средствами API (https://tech.yandex.ru/maps/jsapi/doc/2.1/terms/index-docpage/ ). Этот вопрос лучше у техподдержки уточнить.

ymaps.ready(init);

function init() {
  var myMap = new ymaps.Map("map", {
      center: [55.76, 37.64],
      zoom: 10
    }, {
      searchControlProvider: 'yandex#search'
    }),

    // Создаем геообъект с типом геометрии "Точка".
    myGeoObject = new ymaps.GeoObject({
      // Описание геометрии.
      geometry: {
        type: "Point",
        coordinates: [55.754755, 37.596219]
      },
      // Свойства.
      properties: {
        // Контент метки.
        iconContent: 'Move me',
        hintContent: 'marker'
      }
    }, {
      // Опции.
      // Иконка метки будет растягиваться под размер ее содержимого.
      preset: 'islands#blackStretchyIcon',
      // Метку можно перемещать.
      draggable: true
    });
  myMap.geoObjects.add(myGeoObject);
  myGeoObject.events.add('dragend', function(e) {
    console.log(myGeoObject.geometry.getCoordinates());
  });

}
<!DOCTYPE html>
<html>

<head>
  <title>Добавление метки на карту</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <!--
        Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
        Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
    -->
  <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&amp;apikey=<ваш API-ключ>" type="text/javascript"></script>
  <style>
    html,
    body,
    #map {
      width: 100%;
      height: 100%;
      padding: 0;
      margin: 0;
    }
  </style>
</head>

<body>
  <div id="map"></div>
</body>

</html>

→ Ссылка