Клуб API Карт

Баг с заливкой регионов, а также прекращение срабатывания событий

eduard.dyckman
2 июня 2015, 18:11

Здравствуйте! В проекте используется АПИ регионов и были замечены два неприятных бага. 

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

2. Если программно перенести активную область карты (при помощи метода map.setBounds) куда-нибудь в Чукотский автономный округ, то этот регион перестаёт бросать события

Песочница: http://jsfiddle.net/cnvyvse9/

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

Баг где-то в опции fill. Если выключение заливки сделать через fillColor: 'rgba(0,0,0,0)', - все окей.

Проверим и зафиксим.

А вот по второму моменту поясните - "регион" виден, но не интерактивен, или как? Пример бы :P

Спасибо!

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

Это можно "полечить" через опцию pixelRendering:'static', по сути запрещает полигонам "прыгать по мирам". Надо будет только будет ограничить передвижение по карте одним миром.

Почему этот полигон упрыгивает куда-то не туда после panTo - прямо сейчас не скажу.

Не уверен, что правильно понял, как использовать опцию - http://jsfiddle.net/duskpoet/cnvyvse9/8/

Теперь после panTo перестают работать все регионы :)

Они все на один мир правее :(

В общем все сложно:

1. Из-за некоторых схем чукотка рисуется только в нечетных мирах(те через раз ее нет)

2. Вы думаете что делаете panTo в "правый" край чукотки, на самом деле это другой мир - вас перенесет в левый угол текущего( в -178, а не +182). А там ее уже нет.

Проблема в setBounds/setCenter. Проблемы нет в setGlobalPixelCenter. Проблему можно обойти через https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/map.action.Manager-docpage/#setCorrection

Просто перебрасывая координаты в нужный сегмент (если tick.globalPixelCenter[0]< Math.pow(2,tick.zoom+8)/2 (левая часть мира), то добавить этот самый Math.pow(2,tick.zoom+8)/2

http://jsfiddle.net/duskpoet/cnvyvse9/10/

Теперь вместо Чукотки уносит куда-то в сторону Исландии!

http://jsfiddle.net/cnvyvse9/11/

Если меньше полмира - надо добавлять мир, а не полмира.

Вот, отлично! Спасибо за помощь!

P.S. забавная у вас терминология :)