ST_AsEncodedPolyline — Erzeugt eine codierte Polylinie aus einer LineString Geometrie.
text ST_AsEncodedPolyline(
geometry geom, integer precision=5)
;
Gibt die Geometrie als kodierte Polyline aus. Dieses Format wird von "Google Maps" mit precision=5 und von "Open Source Routing Machine" mit precision=5 oder 6 verwendet.
Der optionale Parameter precision
gibt an wieviele Dezimalstellen der kodierten Polylinie erhalten bleiben. Dieser Wert sollte beim Dekodieren und beim Kodieren ident sein, sonst entstehen inkorrekte Koordinaten.
Verfügbarkeit: 2.2.0
Grundlegendes
SELECT ST_AsEncodedPolyline(GeomFromEWKT('SRID=4326;LINESTRING(-120.2 38.5,-120.95 40.7,-126.453 43.252)')); --result-- |_p~iF~ps|U_ulLnnqC_mqNvxq`@
Anwendung in Verbindung mit LINESTRING und ST_Segmentize für den geographischen Datentyp, und auf Google Maps stellen
-- the SQL for Boston to San Francisco, segments every 100 KM SELECT ST_AsEncodedPolyline( ST_Segmentize( ST_GeogFromText('LINESTRING(-71.0519 42.4935,-122.4483 37.64)'), 100000)::geometry) As encodedFlightPath;
In JavaScript sieht dies ungefähr wie folgt aus, wobei die $ Variable durch das Abfrageergebnis ersetzt wird
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometry" ></script> <script type="text/javascript"> flightPath = new google.maps.Polyline({ path: google.maps.geometry.encoding.decodePath("$encodedFlightPath"), map: map, strokeColor: '#0000CC', strokeOpacity: 1.0, strokeWeight: 4 }); </script>