Я реализовал карту в svg-Element с функцией mercator d3.js. Карта представлена только конкретным городом - все, что находится за пределами городской карты, не имеет отношения к моему проекту.Как ограничить поведение перетаскивания d3.js на карте меркатора
Теперь я хочу реализовать некоторые функции, такие как zoom() и drag() на этой карте.
Но я не могу найти решение, связанное с функцией drag() с моей картой меркатора - я не могу ограничить область преобразования. (пользователь не должен иметь возможности перетаскивать карту за пределами карты города)
Для нормальных SVG-элементов это работает:
var drag = d3.behavior.drag()
.on("drag", dragmove);
function dragmove(d) {
var x = Math.max(0, Math.min('width-of-svg-element', d3.event.x));
var y = Math.max(0, Math.min('height-of-svg-element', d3.event.y));
d3.select(this)
.attr("transform", "translate(" + x + "," + y + ")");
}
Но это не работает для моего Меркатора-карты.
пожалуйста, помогите мне :(
Заранее спасибо
Вот небольшой пример: https://jsfiddle.net/c55w7u9e/
Мое намерение состоит в том, что не должно быть никакой возможности пользователю перетаскивать красный круг (в этом примере, но в моем проекте - карта) вне элемента svg ...
есть ли у вас пример вам шоу? Предпочтительно на JSFiddle? – thatOneGuy
https://jsfiddle.net/c55w7u9e/ – GenXGer
если мой ответ решил проблему, выберите зеленый галочку. Если нет, сообщите мне, и я попытаюсь решить проблему – thatOneGuy