Um den Standort zu bestimmten gibt es verschiedene Möglichkeiten.
Angabe in:
- Längen / Breitengrad
- Latitude / Longitude
- Locator
Hier habe ich einige Funktionen um diese Werte umzurechnen.
Inhaltsverzeichnis
PHP – umrechnen Locator in Längen / Breitengrad
Rechnet anhand des Locactors den Längen und Breitengrad aus
Hier mit den Locator von Wächtersbach
loc2grad("JO40PF");
function loc2grad($locator){ $loc = strtoupper($locator); // Locator einlesen und in Grossbuchstaben wandeln $ll = -180; // Position ganz links westlicher Laenge $Zeichen1 = charCode($loc,0); // Zeichen an Position 1 des Locators kann A bis R sein $Zeichen1 = $Zeichen1 - 65; // Zeichen A = 65 wird 0 $ll = $ll + ($Zeichen1 * 20); $Zeichen3 = charCode($loc,2); // Zeichen an Position 3 des Locators kann 0 bis 9 sein $Zeichen3 = $Zeichen3 - 48; // Zeichen 0 = 48 wird 0 $ll = $ll + ($Zeichen3 * 2); $Zeichen5 = charCode($loc,4); // Zeichen an Position 5 des Locators kann A bis X sein $Zeichen5 = $Zeichen5 - 65; // Zeichen A = 65 wird 0 $ll = $ll + ($Zeichen5 * 2 / 24); $ll = $ll + (0.5*2/24); // in die Mitte des Locators setzen $bb = -90; // Position ganz unten suedlicher Breite $Zeichen2 = charCode($loc,1); // Zeichen an Position 2 des Locators kann A bis R sein $Zeichen2 = $Zeichen2 - 65; // Zeichen A = 65 wird 0 $bb = $bb + ($Zeichen2 * 10); $Zeichen4 = charCode($loc,3); // Zeichen an Position 4 des Locators kann 0 bis 9 sein $Zeichen4 = $Zeichen4 - 48; // Zeichen 0 = 48 wird 0 $bb = $bb + ($Zeichen4 * 1); $Zeichen6 = charCode($loc,5); // Zeichen an Position 6 des Locators $Zeichen6 = $Zeichen6 - 65; // Zeichen A = 65 wird 0 $bb = $bb + ($Zeichen6 * 1 / 24); $bb = $bb + (0.5*1/24); // in die Mitte des Locators setzen $bb = round($bb,4); // 4 Stellen nach dem Komma if ($bb < 0) { echo "S "; // suedlicher Breite } else { echo "N "; // noerdlicher Breite } $bb = abs($bb); echo $bb."<br>"; $ll = round($ll,4); // 4 Stellen nach dem Komma if ($ll < 0) { echo "W "; // westlicher Laenge } else { echo "O "; // oestlicher Laenge } $ll = abs($ll); echo $ll; } function charCode($utf8Character, $pos) { $utf8Character = substr($utf8Character,$pos,1); list(, $ord) = unpack('N', mb_convert_encoding($utf8Character, 'UCS-4BE', 'UTF-8')); return $ord; }
PHP – umrechnen Latitude & Longitude in GPS (DMS)
Quelle: https://www.revilodesign.de/blog/sonstiges/latitude-und-longitude-in-gps-koordinaten-umrechnen/
- Wert 1: Latitude oder Longitude die zu GPS Koordinaten umgerechnet werden soll
- Wert 2: Angabe, ob es sich um eine Latitude (lat) oder Longitude (lng) handelt.
gpsCoordinates( '52.520066', 'lat' );
Die folgende PHP Function rechnet die Positionen automatisch in GPS (DMS) um.
function gpsCoordinates( $position, $type ) { $value = explode('.', $position); $value_1 = $value[0]; if ( $type == 'lat' ) { if ( $value_1 >= 0 ) { $direction = 'N'; } else { $direction = 'S'; } } elseif ( $type == 'lng' ) { if ( $value_1 >= 0 ) { $direction = 'E'; } else { $direction = 'W'; } } $value_2 = $position - $value_1; $value_2 = $value_2 * 60; $value_2 = explode('.', $value_2); $value_3 = '0.' . $value_2[1]; $value_3 = $value_3 * 60; $value_3 = number_format((float)$value_3, 3, '.', ''); $result = abs($value_1) . '° ' . abs($value_2[0]) . '‘ ' . abs($value_3) . ' ' . $direction; return $result; }
PHP – umrechnen Längen / Breitengrad in Locator
- Wert1 = Breitengrad
- Wert2 = N oder S
- Wert3 = Längengrad
- Wert4 = O oder W
LangBreit2Loc(52.5625,"N",13.1250,"O");
function LangBreit2Loc( $breit, $rbreit,$lang, $rlang) { if ($rbreit == "S") { $breit = -1 * breit; }; // suedlicher Breite als negativer Wert if ($rlang == "W") { $lang = -1 * $lang; }; // westlicher Laenge als negativer Wert $breit = $breit + 90; $breit = $breit /10; // 10-Grad-Stuecke als Buchstaben $lang = $lang + 180; $lang = $lang / 20; // 20-Grad-Stuecke als Buchstaben $loc = $loc . chr(65 + floor($lang)) . chr(65 + floor($breit)); $breit = 10 *($breit - floor($breit)); // 1-Grad-Stuecke als Zahlen $lang = 10 *($lang - floor($lang)); // 1-Grad-Stuecke als Zahlen $loc = $loc . chr(48 + floor($lang)) . chr(48 + floor($breit)); $breit = 24 *($breit - floor($breit)); // 1/24-Grad-Stuecke als Buchstabe $lang = 24 *($lang - floor($lang)); // 1/24-Grad-Stuecke als Buchstabe $loc = $loc . chr(65 + floor($lang)) . chr(65 + floor($breit)); return $loc; }
Links zu diesem Thema
http://dk3red.homepage.t-online.de/de/s5_22.htm
https://dc4fs.de/index.php/locator
https://www.revilodesign.de/blog/sonstiges/latitude-und-longitude-in-gps-koordinaten-umrechnen/