ST_AsEncodedPolyline — 从 LineString 几何体返回编码折线。
text ST_AsEncodedPolyline(
geometry geom, integer precision=5)
;
以编码折线形式返回几何图形。 此格式由精度为 5 的 Google 地图和精度为 5 和 6 的开源路由机使用。
可选precision
指定编码折线中将保留多少个小数位。 编码和解码时的值应该相同,否则坐标将不正确。
可用性:2.2.0
基本
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`@
与地理线串和地理分段结合使用,并放在谷歌地图上
-- 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;
javascript 看起来像这样,其中 $ 变量替换为查询结果
<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>