Closed xpathexception closed 4 years ago
В Вашем примере все тайлы содержат одни те же географические координаты, то есть по сути не являются тайлами: по этому каждая точка на экране рисуется столько раз, сколько тайлов поместилось на экран, при изменении масштаба число тайлов на экране изменяется => изменяется количество отрисовок точки => изменяется прозрачность.
@eberkovich, спасибо за ответ, суть проблемы понятна. В качестве решения проблемы пока только приходит в голову "нарезка" исходного полигона внутри TileProvider#load
по границам тайла. Есть ли какой-то другой способ при таких исходных данных?
Да, для того, чтобы добавить свой векторный слой нужно разбить данные на тайлы. Либо можно попробовать воспользоваться мап объектами, но тут нужно оценить количество вершин: вариант с мап объектами может работать медленнее.
@xpathexception подскажите, удалось как-то решить проблему?
@svshishkina в итоге пришлось руками парсить geojson самостоятельно и подсовывать в MapKit полигоны. То есть нужно распарсить geojson, вытащив из него innerRing и outerRings, перепаковать их в com.yandex.mapkit.geometry.LinearRing
, собрать в com.yandex.mapkit.geometry.Polygon
и уже эти полигоны отдавать карте.
Вот тут есть немного об устройстве формата https://geojson.org/geojson-spec.html
@svshishkina в итоге пришлось ~руками~ парсить geojson самостоятельно и подсовывать в MapKit полигоны. То есть нужно распарсить geojson, вытащив из него innerRing и outerRings, перепаковать их в
com.yandex.mapkit.geometry.LinearRing
, собрать вcom.yandex.mapkit.geometry.Polygon
и уже эти полигоны отдавать карте.Вот тут есть немного об устройстве формата https://geojson.org/geojson-spec.html
Мы изначально пошли таким путем, но не устроило по производительности, у нас около 40000 точек. Приложение лагало или вообще вылетало. Поэтому перешли на geoJson, а тут такой подвох оказался.
Поэтому перешли на geoJson, а тут такой подвох оказался.
Для того чтобы перейти на geo json нужно разбить данные на тайлы. https://github.com/yandex/mapkit-android-demo/issues/199#issuecomment-663165116
В данном случае смысл перехода на geojson с мап объектов как раз в том, чтобы не грузить все данные на карту сразу.
Для того чтобы перейти на geo json нужно разбить данные на тайлы. #199 (comment)
Не подскажите, где об этом можно подробней посмотреть, каким образом это делается? Первый раз пришлось работать с geoJson, много чего непонятно.
При перемещении камеры по карте со слоем
GeoJSON
произвольно меняется цвет заливки полигонов. Воспроизводится на примере из репозитория, как на эмуляторе (x86, API 19), так и на реальных устройствах, в такой конфигурацииgeo_min_2.json.txt style.json.txt