2016-07-25 9 views
0

Ich überprüfte Stackoverflow und viele andere Seiten, um eine Javascript (oder JQuery) -Lösung zu finden, die mir sagt, ob ein Benutzer (mit seiner aktuellen GPS-Position) innerhalb oder außerhalb eines vordefinierten Rechtecks ​​ist auf einer Karte. Es gibt viele Lösungen für Kreise und Quadrate, aber ich kann keine Lösung für Rechtecke finden. Ferner darf das Rechteck nicht parallel zu z. Der Equator. Es kann jeden möglichen Winkel dazu haben. Welcher Parameter des Rechtecks ​​wird für die Berechnung von innen/außen benötigt? Kennt jemand eine Javascript-Lösung, um dieses Problem zu lösen?JavaScript-Lösung für Benutzer innerhalb oder außerhalb eines Rechtecks ​​

Antwort

1

Um zu wissen, ob ein Punkt innerhalb eines Rechtecks ​​in einem 2D-Plan ist, was Sie brauchen:

  • die Position eines Punktes des Rechtecks: X0, Y0;
  • der Winkel, den das Rechteck mit der horizontalen Achse bildet: a;
  • die Länge der ersten Seite: L1;
  • die Länge der zweiten Seite: L2.

See this drawing.

ein Punkt (X, Y) innerhalb des Rechtecks, wenn:

  • 0> = (X-X0) * cos (a) - (Y-Y0) * sin (a)> = L1
  • 0> = (X-X0) * sin (a) + (Y-Y0) * cos (a)> = L2

Oder in JavaScript:

function isInRectangle(x, y, x0, y0, a, l1, l2) { 
    var v1 = (x-x0)*Math.cos(a) - (y-y0)*Math.sin(a); 
    var v2 = (x-x0)*Math.sin(a) + (y-y0)*Math.cos(a); 
    return v1 >= 0 && v1 <= l1 && v2 >= 0 && v2 <= l2; 
} 

es zu benutzen:

var p = {x: /*user longitude*/, y: /*user latitude*/}; 
var p0 = {x: /*rect longitude*/, y: /*rect latitude*/}; 
var a = /*angle of the rect in rad*/; 
var l1 = /*length of one side of the rectangle*/ 
var l2 = /*length of the second size*/ 
isInRectangle(p.x, p.y, p0.x, p0.y, a, l1, l2); // => return true if inside, false otherwise 
+0

Wow, ausgezeichnet, sehr gut lesbar, danke! Ich werde es verwenden und es in meinem Projekt praktikabel machen. – Jonny

+0

Gefunden eine hervorragende Bibliothek tun alles, was Sie wissen wollen/tun mit Bereichen: http://turfjs.org – Jonny

Verwandte Themen