Клуб API Карт

Инструмент для добавления меток с заданными координатами

cycler
9 января 2011, 15:40

Есть пример http://api.yandex.ru/maps/jsapi/examples/mapcontroltoolbarbutton.html , где добавляется метка в центр карты. Как добавить к кнопке в примере поле input для ввода координат и добавлять метку с указанными координатами?

Также нашёл пример добавления пользовательского инструмента http://api.yandex.ru/maps/jsapi/examples/mapcontrolscustomizing.html (список офисов), но он не сильно прояснил ситуацию.

Ещё есть пример http://api.yandex.ru/maps/jsapi/examples/geocoding.html , но в нём инпут находится вне карты.

Конечно, можно отдельно создать форму и с помощью css расположить её в нужном месте карты, но это решение не изящно. Или оно одно единственное?

Кстати, попробовал добавлять метки через геокодер - они добавляются, но с некоторым смещением, от 100 метров до 7 километров.

3 комментария
Подписаться на комментарии к посту
Примеров на все случаи жизни не бывает.
Кроме просмотра примеров часто ситуацию помогает прояснить чтение документации.

Тебе нужно создать свой контрол, реализовав интерфейс YMaps.IControl
Создание своего контрола "путеводитель по офисам" подробно описано тут

Возможно в твоем случае самый простой вариант - воспользоваться готовым контролом SearchControl
Как с ним работать описано в разделе Поиск по карте
Что-то вроде этого возможно?

// Создание кнопки
var button = new YMaps.ToolBarButton({
caption: "Добавить метку",
hint: "Добавляет метку в центр карты",
html: ""
});
// При щелчке на кнопке добавляется новая метка
  YMaps.Events.observe(button, button.Events.Click, function () {
  this.addOverlay(new YMaps.Placemark($(this).children('input').val()));
}, map);


Если для реализации моей задачи нужно использовать icontrol, то легче будет сделать append к YMapsID требуемого инпута и прописать в стилях свойства кнопки, максимально близкие к родным.
Что-то вроде этого возможно?

Нет.
Если ты хочешь сделать такую кнопку и инпут элементами тулбара,
это можно сделать реализовав интерфейс YMaps.IToolBarItem

Если для реализации моей задачи нужно использовать icontrol, то легче  будет сделать append к YMapsID требуемого инпута и прописать в стилях  свойства кнопки, максимально близкие к родным.

Я, если честно, не вижу ничего сложного в создании класса с 2-мя методами.
Если ты хочешь чтобы твои контролы располагались на карте,
используй те интерфейсы, которые предоставляет АПИ.
Благо они позволяют добавить на карту любое html содержимое и обвесить его любыми событиями.
Так что степень кастомизации твоих конролов зависит только от тебя.

Если ты не хочешь использовать эти интерфейсы - не располагай контролы на карте.
Иначе при таком сценарии что ты описал (append в контейнер карты) могут быть всякие
траблы с перекрытием твоего контрола оверлеями или другими элементами карты