Here Routing API v8 Flexible Polyline体积为v7的4倍,如何缩小?
如何缩小Here Routing API v8的折线响应体积?
我从Here Routing API v7切换至v8版本,修改大量JavaScript代码后发现,v8返回的Flexible Polyline体积是v7的4倍:
- v7处理后
polylineRoute变量体积约515 KB,覆盖距离2608.35 km - v8版本体积达2065 KB
v7处理代码
var lineString = new H.geo.LineString(), routeShape = route.shape, polyline; routeShape.forEach(function(point) { var parts = point.split(','); lineString.pushLatLngAlt(parts[0], parts[1], 0); }); var polylineRoute = new H.map.Polyline(lineString, { style : { lineWidth : 4, strokeColor : 'rgba(103, 117, 191, 1)' } });
v8处理代码
if (route.sections.length) { let lineStringArray = []; route.sections.forEach((section) => { // Create a linestring to use as a point source for the route line lineStringArray.push(H.geo.LineString.fromFlexiblePolyline(section.polyline)); }); let multiLineString = new H.geo.MultiLineString(lineStringArray); }
可行的体积优化方案
请求时指定精度参数
在调用v8 API时,添加polyline_precision参数控制坐标精度。默认精度可能较高(如6位小数),降低精度(比如设置为polyline_precision=5)会减少每个坐标点的编码字节数,从而缩小整体体积。简化折线点数量
利用地图库自带的折线简化算法,对生成的LineString进行点精简,去除视觉冗余的点,同时保留路线整体形状。示例代码修改如下:if (route.sections.length) { let lineStringArray = []; route.sections.forEach((section) => { let lineString = H.geo.LineString.fromFlexiblePolyline(section.polyline); // 以10米为阈值简化折线,可根据需求调整 lineString.simplify(10); lineStringArray.push(lineString); }); let multiLineString = new H.geo.MultiLineString(lineStringArray); }移除不必要的维度
Flexible Polyline默认可能包含海拔维度,若你的场景不需要海拔数据,请求时添加polyline_dimensions=2参数,只获取经纬度二维数据,减少每个点的编码内容,降低体积。
内容的提问来源于stack exchange,提问作者tinocoam
相关产品推荐
相关产品推荐

