![]() |
Decompress Polyline Algorithmus
Hallo,
ich möchte eine mit diesem ![]() Leider hab ich nur folgenden Javascript gefunden:
Code:
Jemand eine Idee wie man dies am besten in Delphi lösen könnte?
//decode compressed route geometry
_decode: function(encoded, precision) { precision = Math.pow(10, -precision); var len = encoded.length, index=0, lat=0, lng = 0, array = []; while (index < len) { var b, shift = 0, result = 0; do { b = encoded.charCodeAt(index++) - 63; result |= (b & 0x1f) << shift; shift += 5; } while (b >= 0x20); var dlat = ((result & 1) ? ~(result >> 1) : (result >> 1)); lat += dlat; shift = 0; result = 0; do { b = encoded.charCodeAt(index++) - 63; result |= (b & 0x1f) << shift; shift += 5; } while (b >= 0x20); var dlng = ((result & 1) ? ~(result >> 1) : (result >> 1)); lng += dlng; //array.push( {lat: lat * precision, lng: lng * precision} ); array.push( [lat * precision, lng * precision] ); } return array; } }; |
AW: Decompress Polyline Algorithmus
Wo liegt das Problem denn genau?
Du brauchst doch nur den beschriebenen Algorithmus umkehren? Bzw. das JavaScript nach Delphi konvertieren? |
AW: Decompress Polyline Algorithmus
Und warum übersetzt du das dann nicht einfach ins Pascal?
<< ... SHL x |= y ... x := x or y ~ ... - & ... and usw. Der Algo ist auch so recht einfach Ord(c)-63 und 5 Bit ($1F) = die Zeichen @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ jedes Zeichen ergibt also 5 Bit eines Wertes, als Trennzeichen dient das Leerzeichen oder alles Kleinere (Zeilenumbrüche usw.) Das kleinste Bit ( ![]() Es werden nacheinander zwei "Zahlenblöcke" dekodiert und jeweils miteinander aufsummiert. Es wird also immer die Differenz zum vorherrigen Wertepaar gespeichert/ausgelesen und am Anfang natürlich in Bezug auf 0:0. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz