Клуб API Карт

Получение координат метки

Пост в архиве.

Имеется метка, полученная геокодером по адресу (город, улица, дом). Нужно добавить возможность перетаскивания этой метки и получения координат новой точки. Как этого можно добиться?

Вот JS код:

 

        map = new YMaps.Map(document.getElementById("YMapsID"));
        map.enableScrollZoom();
        var miniMap = new YMaps.MiniMap();
        map.addControl(miniMap);
        map.addControl(new YMaps.Zoom());
        map.addControl(new YMaps.ToolBar());
        map.addControl(new YMaps.TypeControl());
        $('#YMapsID').css('display','block');
        var geocoder = new YMaps.Geocoder($('#cf7_field_17').val()+","+$('#cf7_field_18').val()+","+$('#cf7_field_19').val());
        YMaps.Events.observe(geocoder, geocoder.Events.Load, function (geocoder) {
            map.addOverlay(geocoder.get(0));
            map.setBounds(geocoder.get(0).getBounds());
        });
 

 

8 комментариев
Почитав документацию, посмотрев на примеры или воспользовавшись поиском по клубу.
Если бы я нашёл ответ в документации, примерах или в поиске, я бы не стал создавать тему.
Александр Новиков
28 января 2016, 06:21

У метки можно установить свойство dragable и тогда ее можно будет "таскать".

Так же можно для метки поставить обработчик события окончания таскания. В этом обработчике можно получить новые координаты метки.

Что делать с ними зависит от вашей задачи. Можно через AJAX сразу в базу писать. А можно сохранять в hidden поля формы на этой же страницы и сохранять при сохранении формы.

Примеры не обязательно ограничивать примерами из документации. Можно посмотреть исходники любого аналогичного функционала - благо это JavaScript

Это у простой метки, а как установить драгэйбл у метки, которая автоматически создаётся геокодером? И как прописать событие для неё? Полагаю, что вариант geocoder.Events.DragEnd в данном случае не подойдёт.
Александр Новиков
28 января 2016, 06:21

Вопрос на понимание. Чем метка от геокодера отличается от обычной метки?

И никто не заставляет ставить метку автоматом. От геокодера можно получить координаты точки и уже самостоятельно поставить туда метку.

В качестве примера можно посмотреть: http://api.yandex.ru/maps/tools/getlonglat/

Там конечно навороченно ;) но оно работает именно так как надо.

Хм, спасибо, попробую поискать в этом направлении.
Аналогичный функционал смотреть смысла нет, т.к. мне нужен именно яндексовский геокодер, т.е. структура этого объекта.

  вам правильно сказал

геокодер отвечает обычными метками (у которых добавлено несколько полей)

вы можете менять эти метки чтобы они отображали данные из геокодера и при этом перетаскивались

 

        YMaps.Events.observe(geocoder, geocoder.Events.Load, function (geocoder) {            var point = geocoder.get(0);            point.setOptions({dragable: true});            map.addOverlay(point);
            map.setBounds(point.getBounds());
        });