Получить ограничивающую рамку / экстент видимых плиток карты в d3
Допустим, у меня есть стандартная мозаичная карта, подобная этой: http://bl.ocks.org/mbostock/4132797
Как я могу получить координаты ограничительной рамки видимой карты?
Другими словами, как я могу точно сказать размер карты, показанной в любой момент времени. Я понимаю это как ограничительную рамку, но также и как степень.
Спасибо.
1 ответ
Мне удалось найти ответы на похожие, но конкретные вопросы, но я оставляю это на тот случай, если кто-то ищет общий случай.
Из ответа Илии Микс:
Чтобы найти ограничивающую рамку визуальной области вашей карты на экране, просто используйте
projection.invert()
функции и подайте его в верхний левый и нижний правый углы вашего SVG. Если у вас есть SVG 500x500, то это выглядит так:
projection.invert([0,0])
projection.invert([500,500])
Это ограничивающая рамка вашего экрана в широте (или любой другой системе координат, которую вы используете).После этого вы можете получить границы своих объектов и проверить, являются ли они полностью содержащимися, пересекаются ли или находятся в пределах этих границ. Я не собираюсь объяснять, как это сделать здесь, потому что это другой вопрос с множеством разных ответов в зависимости от того, какое определение "в этих пределах" вы принимаете.
Итак, подключите width
а также height
видимой области в проекционный генератор. Вуаля, у тебя есть коробка.