Получить ограничивающую рамку / экстент видимых плиток карты в d3

Допустим, у меня есть стандартная мозаичная карта, подобная этой: http://bl.ocks.org/mbostock/4132797

Как я могу получить координаты ограничительной рамки видимой карты?

Другими словами, как я могу точно сказать размер карты, показанной в любой момент времени. Я понимаю это как ограничительную рамку, но также и как степень.

Спасибо.

1 ответ

Решение

Мне удалось найти ответы на похожие, но конкретные вопросы, но я оставляю это на тот случай, если кто-то ищет общий случай.

Из ответа Илии Микс:

Чтобы найти ограничивающую рамку визуальной области вашей карты на экране, просто используйте projection.invert() функции и подайте его в верхний левый и нижний правый углы вашего SVG. Если у вас есть SVG 500x500, то это выглядит так:

projection.invert([0,0])projection.invert([500,500]) Это ограничивающая рамка вашего экрана в широте (или любой другой системе координат, которую вы используете).

После этого вы можете получить границы своих объектов и проверить, являются ли они полностью содержащимися, пересекаются ли или находятся в пределах этих границ. Я не собираюсь объяснять, как это сделать здесь, потому что это другой вопрос с множеством разных ответов в зависимости от того, какое определение "в этих пределах" вы принимаете.

Итак, подключите width а также heightвидимой области в проекционный генератор. Вуаля, у тебя есть коробка.

Другие вопросы по тегам