Клуб API Карт

Метки с одинаковыми координатами.

Евгений
27 июня 2016, 20:47

Не получается добавить несколько меток так сказать за одну "сессию". Приходится перезагружать страницу, чтобы добавить еще одну. 

Ставим метку, сохраняем, ставим еще одну с другими координатами - сохраняем. В итоге сохраняются 2 метки в бд, НО с одинаковыми координами и у второй странный Placemark. Ломаю голову с этой проблемой. 

Вот весь код: http://codepen.io/evikza/pen/yJgoBy

В версии 2.0 все работало, переписал на 2.1, возникла данная проблема(

5 комментариев
Подписаться на комментарии к посту
Всеволод Шмыров
25 июня 2016, 19:42
У вас ошибка в коде. После каждого открытия балуна происходит новая подпись на событие
$(document.body).on('click', '#btn--svd', function() {

То есть уже со второй метки слушатель клика срабатывает два раза.

Всеволод Шмыров,
спасибо что откликнулись.


Раньше на версии 2.0, использовалась конструкция:
 $('#btn--svd').click(function() { 
Но в 2.1 она отказывается работать. По этому я пришел к выше представленному методу вызова балуна. А как можно решить мою проблему? 


Заранее спасибо.
Всеволод Шмыров,
Решил проблему, оказалось все очень просто:
$(document.body).one('click', '#btn--svd', function() {



one (type, data, fnc) — добавляет обработчик событий, который сработает лишь раз






Всеволод Шмыров
28 июня 2016, 10:07
Евгений,
Можно было еще слушать событие на всем документе по селектору (метод on вроде), но просто производить подписку не в событии открытия балуна, а раньше.
Но ваш способ тоже подойдет :) 
Всеволод Шмыров,
прошу прощения, что задаю Вам много вопросов, но я что-то бессилен уже.


Используя .one теперь, если нажата кнопка отправки #btn--svd - форма отправляется и сбрасывается. Я могу отправить вторую метку без перезагрузки. Но если открыть балун в одной точки, закрыть и открыть без сохранения данных, все снова становиться плохо. За открытые отвечает:
myMap.events.add('click', function(e) {
if (!myMap.balloon.isOpen()) {
Но я не понимаю, как заставить сбросить подпись в данном случае(