Ich habe eine Map in einem SVG-Element mit der Mercator-Funktion von d3.js implementiert. Die Karte repräsentiert nur eine bestimmte Stadt - alles außerhalb der Stadtkarte ist für mein Projekt nicht relevant.Wie man das d3.js Ziehverhalten auf einer Mercator Map einschränkt
Jetzt möchte ich eine Funktion wie Zoom() und ziehen() auf dieser Karte implementieren.
Aber ich kann keine Lösung finden, um die drag() - Funktion mit meiner Mercator-Map zu bearbeiten - ich kann den Bereich der Transformation nicht begrenzen.
Für normale svg-Elemente das funktioniert (soll der Benutzer außerhalb der Karte der Stadt nicht in der Lage sein, um die Karte zu ziehen):
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 + ")");
}
Aber es für meine mercator-Karte funktioniert nicht.
mir bitte helfen :(
Vielen Dank im Voraus
Hier ist ein kleines Beispiel: https://jsfiddle.net/c55w7u9e/
Meine Absicht ist es, dass es keine Möglichkeit, dass der Benutzer der roten zu ziehen Kreis (in diesem Beispiel, aber in meinem Projekt die Karte) außerhalb der Svg-Element ...
Hast du ein Beispiel, dass du eine Show hast? Vorzugsweise auf JSFiddle? – thatOneGuy
https://jsfiddle.net/c55w7u9e/ – GenXGer
Wenn meine Antwort das Problem gelöst hat, wählen Sie den grünen Haken. Wenn nicht, lass es mich wissen und versuche es zu lösen – thatOneGuy