Клуб API Карт

Отключить автопан балуна

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

Есть карта тут http://shop.kena.com.ua/#b-map-tab

При перетягивании карты, смены зума и т.д. идет запрос в базу данных, идет выборка 200 точек из базы данных. Строится коллекция объектов, выводится на карту. После следующего передвижения, происходит удаление коллекции и создание нововй, снова вывод. Лучше делать на большом зуме.

 

Если точка, на краю карты, при клике карта сама прокручиваектся к точке, при этом срабатывает все по плану что я описал. И получается балун, появляется, а когда прокуричатеся, удаляется, т.к. удаляется коллекция.

 

Ворос, как можно сделать так, чтобы балун оставался на месте? Можно сделать точки в одной коллекции, а балун в другой?

21 комментарий
балун это не геообъект, его не поместишь в коллекцию.

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

а как же делсть с запасом? Я беру массив который myMap.getBounds() и его передаю в запрос, чтобы выбрать объекты с базы.

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

все просто - берешь баундс, вычитаешь координаты нижнего угла из верхнего, — получаешь спан. прибавляешь его к координатам верхнего угла и вычитаешь из нижнего, получаешь область с запасом.
Тебе его точно хватит, т.к. автопан балуна никогда не сдвинет настолько карту

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

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

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

И у мен запрос и рисование поставлены на 

myMap.events.add('boundschange', function (event) {

if (event.get('newBounds') != event.get('oldBounds')) {

center = myMap.getCenter();

        bounds = myMap.getBounds();

        ajax_points(center,bounds);

}

});

if (event.get('newBounds') != event.get('oldBounds'))

проверять это бессмысленно, оно всегда будет true

Ну а как тогда, подскажи? Мне нужно чтобы запрос и построение точек происходило, когда идет сдвиг карты или зум.

да событие правильное, просто выброси эту проверку (if), она бессмысленна

А как тогда?

так:

myMap.events.add('boundschange', function (e) {

        ajax_points(e.get('newCenter'), e.get('newBounds'));

});

Мож я что не так понял, но зачем каждый раз пересоздавать коллекцию-то ? Она вроде нормально живёт и за границей видимой области. Да и собирается сама в зависимости от зума и параметров. Если дело в очень большом количестве объектов, так можно сразу тайлами построить на разные зумы как надо и не перестраивать больше.

Активные области не все могут осилить.

Запрашивать по области видимости N-меток при каждом сдвиге карты,

это самое простое, хотя далеко не самое лучшее решение.

 

Кстати, ты бы поделился (с тегом "примеры проектов") рассказом о своем проекте, и о том какие технологии использовал. 

Это мне вопрос или автору топика ?

Я не против, но лучше в ЛС. т.к.:

1. он ещё не дописан и многое пока не так, как будет

2. На этапе разработки закрыта регистрация, что нарушает соглашение. Закроете меня так и не дав дописать :)

Вообщем если интересно - по-секрету покажу. Пиши в личку :)

Или интересно, что бы я рассказал просто о технологиях, не показывая конкретный сайт, но зато всем сразу ? 

Не обязательно весь проект, можешь поделится примером использования какой-нибудь одной технологии.

Ты можешь сделать скриншоты, выложить часть кода на гитхаб.

 

Например, было бы здорово рассказать как ты генеришь объекты на тайлах из БД. Этот вопрос не очень хорошо освещен в клубе и документации, но его часто задают.

 

Что касается регистрации - она не противоречит ПС. Главное чтобы доступ к карте был бесплатным.

Сейчас зарегистрироваться невозможно впринципе. Учётки создаются только мной. Разве это не противоречит ПС ? :-)

Что такое "гитхаб" ? У меня используется много интересных технологий по картам. Не только тайлы. Ещё получение всех адресов из области (многоугольника), смещение слоя сторонних карт (спасибо twirl'у http://clubs.ya.ru/mapsapi/replies.xml?item_no=36655), выборка из базы по области (многоугольника) на карте и ещё много чего. Тут скорее целая лекция получится :-)

github.com это публичный репозиторий

под управлением git. Туда можно выложить фрагменты своего кода и дать на него ссылку.

Было бы интересно про тайлы и выборку из базы.

Можно написать пару небольших статей с примерами кода,

мы бы анонсировали их в блоге и поделились бы в клубе.

 

можно. Только тогда немного позже, как закончу. Тем более наверняка в процессе ещё какие-нибудь идеи появятся :)

Просто я больше как-то привык в виде диалога. Можно в отдельной ветке изложить в форме вопрос-ответ, а можно вообще встретиться со всеми заинтересованными например, если желание есть конечно :) Я тоже из Питера.