2016-07-22 2 views
1

Есть ли способ скорректировать границы карты, чтобы правый край России не появлялся слева? Вы можете видеть на картинке, что у меня есть область MultiPolygon, накладывающаяся на Россию, но карта и наложение разделены. Я бы хотел, чтобы этот крошечный кусочек страны был справа, если это возможно!установка границы карты/край, когда nowrap занят

Край России на неправильной стороне карты:

enter image description here

ответ

0

Добро пожаловать на ТАК!

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

Ваши данные (возможно, GeoJSON?) Содержат отдельный полигон, долготы которого находятся в диапазоне [-180, -120]. У листа нет выбора, кроме как отобразить его слева от вашей карты, независимо от опции noWrap.

Поэтому вам нужно будет копаться в ваших данных и добавить 360 градусов долготы к каждому узлу этого многоугольника, чтобы теперь они сидели в диапазоне [180, 300].

Или каким-то образом ввести «обнаружение» в свой код, который автоматически выполнит добавление долготы для фигур, которые ограничивают и/или центр находятся далеко (допустим, в диапазоне долготы [-180, -120]). Листовка не выполняет эту операцию автоматически из коробки.

Примечание: опция noWrap предназначена для того, чтобы ваш слой плитки не загружал плитки вне этого «центрального» мира (чтобы избежать отображения нескольких копий мира). Но в вашем случае вам нужно хочу, чтобы показать часть России/Сибири на «соседней копии мира», поэтому вам может понадобиться удалить эту опцию, иначе у вас будет многоугольник, не сидящий над какой-либо базовой картой.

+0

Я думаю, мой вопрос заключается в том, что есть, что небольшая часть России в соседней копии карты мира. Есть ли способ переместить его на другую карту? Эффективно слегка перемещая видовое окно карты вправо. Можно ли решить, что такое «верхний, левый» и «нижний, правый» рамки, в который я могу просмотреть эту карту? – appaulmac

+0

Что касается навигации/взаимодействия, просто обратитесь к ответу chrki с опцией «maxBounds» карты. Что касается скрытия Сибири от плитки «центрального мира» и ее отображения в «правом мире», вам, вероятно, будет интересен плагин [TileLayer.BoundaryCanvas] (https://github.com/aparshin/leaflet-boundary-canvas) , – ghybs

+0

Что касается перемещения вашего многоугольника, как сказано в приведенном выше ответе, вы можете либо реорганизовать свои данные, либо попытаться составить «обнаружение» дальневосточного многоугольника, который необходимо переместить на 360 градусов по восточному склону (вы бы добавили 360 градусов по каждой долготной координате в данных GeoJSON). – ghybs

0

Обходной путь, о котором я могу думать, это использовать свойство maxBounds, где вы смещаете границы по умолчанию немного вправо, вместе с minZoom: 1. Это не помешает пользователю увидеть мир несколько раз в течение короткого времени, если оно будет уменьшаться далеко/панорамирование снаружи, как говорится там:

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

var map = L.map('map',{ 
    maxBounds:[ [-90, -160], [90, 200] ], 
    minZoom: 1 
    }).setView([66.058, 189.459], 4); 

Demo

+0

Спасибо за это дополнение. Мне нравится, как это приводит к отскоку на карте при перетаскивании. Это, к сожалению, не разрешает мой оригинальный вопрос, но эта функция все же входит в мой код :) – appaulmac

Смежные вопросы