Масштабирование и панорамирование карты Меркатора с центром в Тихом океане с использованием d3.js
Извиняюсь, если это простой случай, когда я не замечал очевидного, но я пытаюсь собрать страницу, на которой показана карта мира (данные получены из файла TopoJSON) в проекции Меркатора с центром в Тихом океане. То есть Европа слева, Америка справа и Австралия посередине. Немного похоже на это ...
С этого момента я хочу иметь возможность масштабировать и перемещать карту по своему желанию, но когда я перемещаюсь на восток или запад, я хочу, чтобы карта прокручивалась ».вокруг' и не наступит конец света (надеюсь, это имеет смысл).
Код, над которым я сейчас работаю, находится здесь (или на следующей Gist (https://gist.github.com/d3noob/4966228) или блок (http://bl.ocks.org/d3noob/4966228));
body {font-size:11px;}
path {
stroke: black;
stroke-width: 0.25px;
}
var width = 960,
velocity = .005,
then = Date.now()
height = 475;
var projection = d3.geo.mercator()
.center([0, 0 ])
.scale(1000);
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
var path = d3.geo.path()
.projection(projection);
var g = svg.append("g");
d3.json("world-110m.json", function(error, topology) {
g.selectAll("path")
.data(topojson.object(topology, topology.objects.countries).geometries)
.enter()
.append("path")
.attr("d", path)
.style("fill","black")
d3.timer(function() {
var angle = velocity * (Date.now() - then);
projection.rotate([angle,0,0]);
svg.selectAll("path")
.attr("d", path.projection(projection));
});
var zoom = d3.behavior.zoom()
.on("zoom",function() {
g.attr("transform","translate("+d3.event.translate.join(",")+")scale("+d3.event.scale+")")
});
svg.call(zoom)
});
Код представляет собой смесь примеров, и в результате я вижу карту, которая может автоматически поворачиваться с запада на восток, и я могу панорамировать и масштабировать с помощью мыши, но при панорамировании и масштабировании, как я могу сказать, я влияю на внутренняя "г" элемент, а не карта внутриSVG» элемент.
Есть много хороших примеров возможности панорамирования и масштабирования карты с центром на меридиане. Но нет ни одного анти-меридиана, который я обнаружил.
Любая помощь будет принята с благодарностью.