Google Maps Zwei Kreise Schnittpunkte

7

Gibt es einen einfachen Weg, die lat / lng der Schnittpunkte (falls verfügbar) von zwei Kreise in Google Maps API V3 ? Oder sollte ich mit dem harten Weg gehen?

BEARBEITEN: In meinem Problem haben Kreise immer den gleichen Radius, falls dies die Lösung erleichtert.

    
yazanpro 18.03.2014, 03:01
quelle

3 Antworten

11

Ja, für gleichwertige Kreise könnte eine eher einfache Lösung ausgearbeitet werden:
Lassen Sie uns ersten Kreis Mitte ist ein Punkt, zweiten Kreis Mitte ist F, Mittelpunkt ist C, und Schnittpunkte sind B, D. ABC ist ein rechtwinkliges sphärisches Dreieck mit einem rechten Winkel C.

Wir wollen den Winkel A finden - das ist der Abweichungswinkel von der A-F-Richtung. Sphärische Trigonometrie (Napiers Regeln für rechte sphärische Dreiecke) gibt uns eine Formel:

cos(A)= tg(AC) * ctg(AB) wo ein Symbol sphärischen Winkel bezeichnet, bezeichnen doppelte Symbole Winkel von großen Kreisbögen (AB, AC). Wir können sehen, dass AB = Kreisradius (im Bogenmaß, natürlich), AC = Halbabstand zwischen A und F auf dem Großkreisbogen. Um AC (und andere Werte) zu finden, verwende ich den Code von dieser ausgezeichneten Seite

%Vor%

und unser

%Vor%

Wenn der Kreisradius Rd in Kilometern angegeben ist,

%Vor%

Jetzt können wir Winkel

finden %Vor%

Startlager (AF-Richtung):

%Vor%

Kreuzungspunkte:

%Vor%

Schnittpunktkoordinaten:

%Vor%

und das Gleiche für D_bearing

latB, lonB sind im Bogenmaß

    
MBo 21.03.2014, 08:46
quelle
4

Die Berechnung des "harten" Wegs kann für den Fall vereinfacht werden r1 = r2 =: r. Wir müssen erst noch die Kreiszentren P1, P2 von (lat, lng) in kartesische Koordinaten (x, y, z) umrechnen.

%Vor%

Aber die Schnittlinie der Ebenen, die die Kreise enthalten, kann leichter berechnet werden. Sei d die Entfernung des tatsächlichen Kreismittelpunkts (in der Ebene) zu dem entsprechenden Punkt P1 oder P2 auf der Oberfläche. Eine einfache Ableitung zeigt (mit R der Erdradius):

%Vor%

Nun seien S1 und S2 die Schnittpunkte und S deren Mittelpunkt. Mit s = |OS| und t = |SS1| = |SS2| (mit O = (0,0,0) ist das Zentrum der Erde) erhalten wir aus einfachen Ableitungen:

%Vor%

Nun, da r1 = r2 sind die Punkte S, S1, S2 in der Mittelebene zwischen P1 und P2. Für v_s = OS erhalten wir:

%Vor%

Schließlich müssen wir zurück zu (lat, lng) konvertieren:

%Vor%     
coproc 23.03.2014 19:19
quelle
4
___ qstnhdr ___ Google Maps Zwei Kreise Schnittpunkte ___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123algorithm ___ Ein Algorithmus ist eine Folge wohldefinierter Schritte, die eine abstrakte Lösung für ein Problem definieren. Verwenden Sie dieses Tag, wenn sich Ihr Problem auf den Algorithmusentwurf bezieht. ___ tag123googlemaps ___ Google Maps ist eine Desktop- und mobile Web-Mapping-Dienstanwendung und -technologie von Google, die Satellitenbilder, Straßenkarten und Street View-Perspektiven bietet. Außerdem werden Karten unterstützt, die auf Websites von Drittanbietern über das Google Maps-API eingebettet sind, und ein Ortungsdienst für städtische Unternehmen und andere Organisationen in zahlreichen Ländern auf der ganzen Welt. ___ antwort22951305 ___

Yazanpro, Entschuldigung für die späte Antwort zu diesem Thema.

Sie könnten an einer prägnanten Variante von MBos Ansatz interessiert sein, der in zweierlei Hinsicht vereinfacht:

  • Erstens, indem Sie einige der eingebauten Funktionen der google.maps-API ausnutzen, um viel von der harten Mathematik zu vermeiden.
  • zweitens durch Verwendung eines 2D-Modells zur Berechnung des eingeschlossenen Winkels anstelle des kugelförmigen Modells von MBo. Ich war anfangs unsicher über die Gültigkeit dieser Vereinfachung, habe mich aber mit Tests in einer Gabel von MBos Geige zufriedengegeben, dass die Fehler überhaupt gering sind der größte der Kreise in Bezug auf die Größe der Erde (z. B. bei niedrigen Zoomstufen).

Hier ist die Funktion:

%Vor%

Übrigens, Respektlosigkeit gegenüber MBo - das ist eine ausgezeichnete Antwort.

    
___ tag123googlemapsapi3 ___ Google Maps Mit JavaScript API Version 3 können Sie die Funktionen von Google Maps in Ihre eigene Website einbetten. Version 3 bietet eine erheblich verbesserte Unterstützung für mobile Geräte. Stellen Sie Nicht-Programmier- und Lizenzierungsfragen in der Google Maps-API-Google-Gruppe (vollständige Beschreibung für einen Link). ___ tag123geometry ___ Geometrie ist ein Zweig der Mathematik, der sich mit Fragen der Form, der Größe, der relativen Position von Figuren und der Eigenschaften von Raum beschäftigt. ___ qstntxt ___

Gibt es einen einfachen Weg, die %code% / %code% der Schnittpunkte (falls verfügbar) von zwei Kreise in Google Maps API V3 ? Oder sollte ich mit dem harten Weg gehen?

BEARBEITEN: In meinem Problem haben Kreise immer den gleichen Radius, falls dies die Lösung erleichtert.

    
___ answer22553992 ___

Ja, für gleichwertige Kreise könnte eine eher einfache Lösung ausgearbeitet werden:
Lassen Sie uns ersten Kreis Mitte ist ein Punkt, zweiten Kreis Mitte ist F, Mittelpunkt ist C, und Schnittpunkte sind B, D. ABC ist ein rechtwinkliges sphärisches Dreieck mit einem rechten Winkel C.

Wir wollen den Winkel A finden - das ist der Abweichungswinkel von der A-F-Richtung. Sphärische Trigonometrie (Napiers Regeln für rechte sphärische Dreiecke) gibt uns eine Formel:

%code% wo ein Symbol sphärischen Winkel bezeichnet, bezeichnen doppelte Symbole Winkel von großen Kreisbögen (AB, AC). Wir können sehen, dass AB = Kreisradius (im Bogenmaß, natürlich), AC = Halbabstand zwischen A und F auf dem Großkreisbogen. Um AC (und andere Werte) zu finden, verwende ich den Code von dieser ausgezeichneten Seite

%Vor%

und unser

%Vor%

Wenn der Kreisradius Rd in Kilometern angegeben ist,

%Vor%

Jetzt können wir Winkel

finden %Vor%

Startlager (AF-Richtung):

%Vor%

Kreuzungspunkte:

%Vor%

Schnittpunktkoordinaten:

%Vor%

und das Gleiche für D_bearing

latB, lonB sind im Bogenmaß

    
___ answer22595797 ___

Die Berechnung des "harten" Wegs kann für den Fall vereinfacht werden r1 = r2 =: r. Wir müssen erst noch die Kreiszentren P1, P2 von (lat, lng) in kartesische Koordinaten (x, y, z) umrechnen.

%Vor%

Aber die Schnittlinie der Ebenen, die die Kreise enthalten, kann leichter berechnet werden. Sei %code% die Entfernung des tatsächlichen Kreismittelpunkts (in der Ebene) zu dem entsprechenden Punkt P1 oder P2 auf der Oberfläche. Eine einfache Ableitung zeigt (mit R der Erdradius):

%Vor%

Nun seien S1 und S2 die Schnittpunkte und S deren Mittelpunkt. Mit %code% und %code% (mit O = (0,0,0) ist das Zentrum der Erde) erhalten wir aus einfachen Ableitungen:

%Vor%

Nun, da %code% sind die Punkte S, S1, S2 in der Mittelebene zwischen P1 und P2. Für %code% erhalten wir:

%Vor%

Schließlich müssen wir zurück zu (lat, lng) konvertieren:

%Vor%     
___
Roamer-1888 09.04.2014 01:43
quelle