Клуб API Карт

Пользовательские иконки для меток в API2 "съезжают"

zhukdl
20 июня 2012, 17:42

Всем привет.

Может это у меня баг, или в АПИ нововведение или косяк.

Я создаю пользовательские иконки, вывожу.

У меня получается, что иконка "съезжает" вверх относительно координаты точки приложения.

Это при разных масштабах

 

Но при этом балун открывается нормально

 

Сама точка поставлена в первом АПИ и выглядит так

 

12 комментариев
Подписаться на комментарии к посту

вы не правильно указали есть офсеты или размеры.

Про офсеты я знаю, я создаю без них.

Вот, например.

var placemark100= new ymaps.Placemark(latlng100);
placemark100.options.set("hasBalloon", true);
placemark100.options.set("iconImageHref", "http://mysite/myicon.png");
placemark100.options.set("iconImageSize", [28,29]);

А дальше она в зависимости от масштаба отползает от точки.

 

Значит надо создавать с ними - [-14,-29]

Судя по всему у вас используются офсеты от дефолтной картинки - [-10,-40] которые вам и не походят

Если не затруднит, можно объяснить в чем разница в дефолтных офсетах в первой версии АПИ, и во второй.

Т.е. если я создаю со своей иконкой в первой версии, и не указываю офсеты, если я правильно помню, картинка была немного сдвинута [-7, -28] ну может я немного ошибаюсь в цифрах. А если начинал прикладывать, то приложение шло с учетом этих отступов.

т.е.

x = Xoffset - 7

y = Yoffset - 28

Соответственно, если я отступ не задавал, моя иконка была уже смещена

 

Каков дефолтный отступ во втором АПИ, т.е. как мне реализовать, чтобы при неуказании отступов иконка была на том же месте. Т.е. если я выполню один и тот же пример на первом и втором АПИ, иконки были бы на своих местах. Ну, или по-другому, если отступы при создании требуются, то как их вычислить, например, для иконок первого АПИ

в первой версии дефолтныим были ДРУГИЕ иконки.

если вы используете любую иконку по размерам отличную от дефолтной(уберите у себя задание ее парамеров и посмотрите что мы покажем по дефолту) - требуется указать как новые размеры, так и оступ от точки привязки.

 

А можешь сказать почему эти офсеты вообще нужно выставлять.

Почему они не хранятся в дефолном стиле иконок?

у КАЖДОЙ иконки "хвостик" стоит в лично ее месте относительно 0.0 этой иконки.

это понятно,

разьве особенности отступа (хвостика) в каждом конкретном стиле не хранятся?

Если я установил дефолтный стиль для иконок, и АПИ поменялось,

странно что нужно руками менять офсеты?

 

стиль то поменялся - вообще другие иконки используются.

И вот и получается что нельзя просто взять только картинку из 1.1 и поставить в 2.0

Я решил эту проблему.

Иконки первого АПИ были с хвостами, сдвинутыми на 7.

Как я уже описывал выше.

Чтобы у меня в компоненте для джумлы все осталось нормально при переключении между версиями АПИ я добавил код.

x = Xoffset - 7;

y = Yoffset - ВысотаИконки;

И все стало нормально,

Т.е. если пользователи пользовались иконками первого апи, то все подхватилось, т.к. у них не было задано отступа (он равен 0), то все нормально пересчиталось и выставилось.

Я так понял, что съезд иконок от изменения масштаба происходил либо из-за того, что я не задавая отступ попадал в ситуацию неинициализированных переменных, поскольку если взялся бы дефолтный отступ, то просто иконка сдвинулась и висела в другом месте. А если Вы посмотрите на картинки - она именно ползла.

Вставив код пересчета и добавив постоянное указание отступа, все заработало.

Ну а если пользователи пользовались своими иконками, и указывали отступы, то, соответственно, новые отступы пересчитались по формуле и поставили пользовательскую иконку в нужное место