yandex / mapkit-android-demo

MapKit Android demo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

vkatzyn opened this issue · comments

Версия: 4.3.1-full

Если две последовательные входящие в Polygon точки имеют значения долготы с разным знаком, то линия между ними может быть проведена не по кратчайшему пути, а по наибольшему – через всю карту.
Например, точки [65.0000, -179.9999] и [65.0000, 179.9999]. Они находятся очень близко друг к другу, но линия между ними будет проведена через всю карту.
На скриншотах примеры подобного поведения.
telegram-cloud-photo-size-2-5415835009161479828-y
telegram-cloud-photo-size-2-5415835009161479829-y

Пожалуйста, пришлите нам минимальный собранный пример, демонстрирующий описанную ситуацию. Вы можете выложить его проектом на GitHub, прикрепить к переписке в архиве или загрузить на Яндекс Диск и указать ссылку.

Мы постараемся помочь.

mapkitpolygonbugexample.zip
Перед запуском нужно указать API ключ в классе TheApplication.
Ожидаемое поведение – отрисовка на карте зелёного квадрата с вершинами в точках: (65.0, 179.0); (66.0, 179.0); (66.0, -179.0); (65.0, -179.0).
Полученное поведение:

Если нужна именно сборка – предоставьте API ключ для MapKit

Спасибо за детальное описание.

Постараемся исправить ситуацию в ближайших обновлениях API, однако, обозначить какие-либо сроки мы пока не можем. Подождите, пожалуйста!

Ожидаемое поведение – отрисовка на карте зелёного квадрата с вершинами в точках: (65.0, 179.0); (66.0, 179.0); (66.0, -179.0); (65.0, -179.0).

Точки с широтой 179 и -179 довольно далеко друг от друга находятся на числовой прямой, поэтому они лежат на противоположных краях мира. Если хочется перейти через 180 долготу кратчайшим путём, так стоит это сделать явным образом, а именно указать координаты прямоугольника "(65.0, 179.0); (66.0, 179.0); (66.0, 181.0); (65.0, 181.0)".

Если хочется перейти через 180 долготу кратчайшим путём, так стоит это сделать явным образом, а именно указать координаты прямоугольника "(65.0, 179.0); (66.0, 179.0); (66.0, 181.0); (65.0, 181.0)".

Спасибо, это работает. Но надеюсь, что всё же будет исправление, которое позволит получить желаемый результат со значениями в пределах (-180; 180).