名称

ST_AsEncodedPolyline — 从 LineString 几何图形返回一个编码的折线。

概要

text ST_AsEncodedPolyline(geometry geom, integer precision=5);

描述

将几何图形作为编码的折线返回。这种格式被 Google Maps 使用,精度为 5,也被 Open Source Routing Machine 使用,精度为 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`@
	

结合地理 linestring 和地理 segmentize 使用,并放在谷歌地图上

-- 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>