Похоже, что путь находится в середине вашего SVG:
Это просто очень мало.
Сd3 Меркатор проекционный масштаб 100 вы отображаете 360 градусов долготы на 100 пикселей. Таким образом, с SVG в 1400 пикселей, вы могли бы показать 14 земель. Не идеально для города. Если вы увеличите значение масштаба до 10000, вы по крайней мере увидите свою функцию, но она не совсем центрирована и все еще довольно мала, попробуйте значения для центра и масштаба следующим образом:
.center([-1.9025,52.4862])
.scale(100000)
(переводим то же самое)
Теперь мы получаем что-то:
Но это все еще скука, мыможно просто использовать projection.fitExtent или projection.fitSize для автоматического масштабирования:
Promise.all([ukmap]).then(function(values){
var map = topojson.feature(values[0],values[0].objects.E08000025)
projection.fitSize([w,h],map);
var features = map.features;
svg.selectAll("path")
.data(features)
.enter()
...
Это растягивает объект, чтобы заполнить указанные измерения (для этого требуется объект геоджон, а не массив, отсюда моя небольшая реструктуризация),Мы также можем указать поле следующим образом:
projection.fitExtent([[100,100],[w-100,h-100]],map);
Это обеспечивает 100-пиксельное поле вокруг карты, поэтому оно не касается края SVG.
Оба эти метода,fitSize и fitExtent, автоматически устанавливают перевод и масштабирование проекта, так что мы можем фактически пропустить настройку масштаба, центра и перевода вручную (перевод и масштабирование, по сути, делают одно и то же: один после проецирования и один перед, соответственно. Обычно это проще использоватьхотя при настройке параметров проецирования вручную)