Berechnungen auf der Erdkugel (Spherical)
Wir bieten geografische Berechnungen wie Entfernung, Azimut, Fläche und Interpolation auf drei Plattformen mit denselben Namen und denselben Ergebnissen. Da wir uns nicht auf plattformspezifische Hilfsfunktionen der Karten-SDKs verlassen, ändern sich die Werte nicht, wenn der Anbieter gewechselt wird. Auch die Tap-Erkennung im SDK und die Darstellung von Großkreispfaden verwenden diese Berechnungen.
01 · Grundlegende Berechnungen
Häufig verwendete Funktionen sind in Spherical zusammengefasst. Entfernungen werden in Metern, Peilungen in Grad, wobei Nord als 0 gilt, und Flächen in Quadratmetern zurückgegeben. Die Argumente sind die Koordinaten selbst und hängen nicht von Projektion oder Zoom ab.
val meters = Spherical.computeDistanceBetween(from, to)
val heading = Spherical.computeHeading(from, to)
// Die Rand-Marker des Kreises in acht Richtungen setzen
val ring = (0 until 8).map { i ->
Spherical.computeOffset(center, 3_000.0, i * 45.0)
}
val routeMeters = Spherical.computeLength(routePoints)
val areaSqMeters = Spherical.computeArea(polygonPoints)let meters = Spherical.computeDistanceBetween(from: from, to: to)
let heading = Spherical.computeHeading(from: from, to: to)
let ring = (0..<8).map { i in
Spherical.computeOffset(origin: center, distance: 3_000.0, heading: Double(i) * 45.0)
}
let routeMeters = Spherical.computeLength(routePoints)import { computeDistanceBetween, computeOffset, computeLength } from '@mapconductor/js-sdk-core';
const meters = computeDistanceBetween(from, to);
// Ein Ring 3 km vom Mittelpunkt, alle 45 Grad
const ring = Array.from({ length: 8 }, (_, i) =>
computeOffset({ origin: center, distance: 3000, heading: i * 45 }));
const routeMeters = computeLength(routePoints);02 · Kugelmodell und Ellipsoidmodell
Für geografische Berechnungen stehen zwei Genauigkeitsstufen zur Verfügung: das Kugelmodell, das die Erde als perfekte Kugel behandelt, und das geodätische Modell, das die Erde als WGS84-Ellipsoid behandelt. Je nach Anwendungsfall wird das passende Modell gewählt.
Die Konstanten basieren in beiden Fällen auf WGS84 (Äquatorradius 6.378.137 m, Abplattung 1/298.257223563). Da alle drei Plattformen dieselben Konstanten und Formeln verwenden, geben gleiche Eingaben dieselben Werte zurück.
Kugelmodell (schnell genug, genau genug)
Entfernung per Haversine, Azimut und Interpolation per sphärischer Trigonometrie. Bis zu einigen hundert Kilometern sind Fehler praktisch vernachlässigbar; der Vorteil ist der geringe Rechenaufwand.
Ellipsoidmodell (Geodätische Linie)
Berechnet die geodätische Linie auf dem WGS84-Ellipsoid (iterative Lösung vom Vincenty-Typ). Da die Methodenstruktur wie bei Spherical ist, können Sie bei Kugeln Spherical und bei WGS84 WGS84Geodesic verwenden, ohne den Aufruf zu ändern. Die Fläche wird nach Authalic (Ellipsoid) berechnet.
Fällt bei Nichtkonvergenz auf Kugel zurück
Die iterative Lösung des Ellipsoids konvergiert nicht immer, z. B. bei fast antipodalen Punkten. In diesem Fall wird automatisch auf das Ergebnis des Kugelmodells umgeschaltet, sodass niemals 0 oder NaN zurückgegeben wird. Aufrufer müssen keine Ausnahmebehandlung schreiben.
03 · Brücke zur Anzeige
Funktionen, die bildschirmbasierte Größen wie „einen Fingerbreit“ oder „16px Rand“ auf der Karte in geografische Entfernungen umrechnen. Da die Umrechnung Zoom und Breitengrad berücksichtigt, bleibt die Wahrnehmung gleich, auch wenn Vergrößerung oder Ort sich ändern.
Abbildung · Ablauf, der für die Tap-Erkennung verwendet wird
Wandelt den eingestellten „Fingergröße“ (logische Einheiten) in Bildschirmpixel um.
Mit calculateMetersPerPixel wird die Toleranzdistanz (Meter) beim aktuellen Zoom und beim aktuellen Breitengrad umgerechnet.
Mit dieser Toleranzdistanz wird geprüft, ob ein Punkt Linien oder Formen berührt – direkt in geografischen Koordinaten.
Dank dieses Ablaufs ändert sich die Leichtgängigkeit von Linien beim Zoomen nicht, und die Erkennung ist bei allen Anbietern gleich.
04 · Berechnungen für Linien und Formen
Funktionen, um das Zeichnen und die Erkennung von Polylines und Polygonen auf allen Anbietern mit denselben Ergebnissen zu gewährleisten. Dieselben Funktionen, die im SDK intern verwendet werden, sind öffentlich verfügbar.
createInterpolatePoints und pointOnLineOrNull sind sowohl in WGS84Geodesic als auch in Planar unter demselben Namen vorhanden. Der Aufrufer kann zwischen dem Geodäten-Modell und dem Geraden-Modell wechseln, indem er einfach den Namensraum austauscht.
Gleiche Eingabe, gleiches Ergebnis
Die Implementierungen für Kotlin, Swift und TypeScript verwenden dieselben Formeln und dieselben Konstanten. Abweichungen bei angezeigten Entfernungen oder Flächen zwischen Plattformen treten nicht auf.
Auch aus Apps verwendbar
Die Kernberechnungsfunktionen sind keine internen Hilfsfunktionen, sondern Teil der öffentlichen API. Sie können direkt in der Logik der App verwendet werden, z. B. zur Anzeige von Routenentfernungen, Berechnung von Radien oder benutzerdefinierter Trefferprüfung. Alle auf dieser Seite aufgelisteten Funktionen sind auf allen drei Plattformen verfügbar.