Я пытаюсь получить пример d3 Zoom to Bounding Box II (см. Здесь: https://bl.ocks.org/mbostock/raw/9656675/), работающий на карте мира, а не на карте США, согласно примеру , К сожалению, масштабирование является неустойчивым. Для некоторых стран он работает нормально; для других он приближается к Тихому океану.d3: Увеличить для Bounding Box II для стран вместо штатов
Я бы JSFiddle мой код, я не могу загрузить файл topojson из удаленного места. Соответствующая функция, которую я редактировал в приведенном выше примере, приведен ниже:
var projection = d3.geo.mercator() // instead of albersUsa
.scale(100)
.translate([width/2, height/2]);
d3.json("world-110m.json", function(error, world) { //world json
if (error) throw error;
g.selectAll("path")
.data(topojson.feature(world, world.objects.countries).features) //traverse world objects instead of state objects
.enter().append("path")
.attr("d", path)
.attr("class", "feature")
.on("click", clicked);
g.append("path")
.datum(topojson.mesh(world, world.objects.countries, function(a, b) { return a !== b; })) // append world objects not states
.attr("class", "mesh")
.attr("d", path);
});
Любая помощь оценивается.
ПРИМЕЧАНИЕ: Я только понял, что масштабирование является неустойчивым для некоторых состояний. Например, попробуйте нажать на VT или NH. Я напишу ошибку в GitHub. Между тем какие-то идеи?
Возможно ли это из вашей версии «world-110m.json»? Я воссоздал вашу карту здесь с моей версией мира json, и, похоже, она работает хорошо. С какой конкретной страной вы столкнулись с проблемой? http://plnkr.co/edit/L4U1fRXq9wre1DrigkLJ?p=preview Вы можете скачать карту мира из плунжера. –
Вы могли решить это? –
Я должен был обновиться раньше. Я опубликовал сообщение о том, что Git и Mike Bostock выпустили исправление в течение нескольких часов: https://github.com/mbostock/d3/issues/2819. Оказывается, я запускал (слегка) устаревшую версию d3. Это и он изменил масштаб в границах var. См. Его ответ по ссылке выше. – dylanmac