Приблизьтесь к ограничительной рамке без topoJSON - PullRequest
0 голосов
/ 29 мая 2018

Пример Майка Бостока «Увеличить масштаб» предполагает, что вы используете topoJSON.

https://bl.ocks.org/mbostock/4699541

Как можно изменить скрипт, чтобы вы также могли использовать его с данными geoJSON?В частности, мой сценарий не будет использовать следующее:

.data(topojson.feature(us, us.objects.states).features)

, но что-то вроде этого:

.data(collection.features)

1 Ответ

0 голосов
/ 29 мая 2018

Блок уже использует geojson - d3 geoPath не рисует объекты topojson, он рисует объекты geojson:

path (object [, arguments…]) <>

Визуализирует данный объект, который может быть любым объектом GeoJSON или геометрическим объектом

... ( ссылка )

Давайте рассмотрим ваш пример:

.data(topojson.feature(us, us.objects.states).features)

topojson.feature(us, us.objects.states) возвращает коллекцию объектов, коллекцию объектов Geojson.

.features доступ к функциям коллекции объектов (в данном случае к массиву полигонов).

То, что подается на .data() , уже уже geojson.Таким образом, мы можем просто использовать .data(geojson.features), как вы предлагаете (если у нас есть коллекция объектов, в противном случае мы можем просто массив объектов геоджонов).

Мы можем продемонстрировать это на вашем примере двумя способами - предварительно преобразовать ваши данные в geojson с помощью topojson в браузере здесь , или мы можем загрузить файл geojson и полностью прекратить преобразование из topojson, как видно здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...