如何在HERE地图中使用坐标LineString?API获取格式存疑
在HERE地图中展示你的LineString:完整解决方案
我来帮你理清这个问题,一步步搞定在HERE地图展示这条路线的需求:
首先明确坐标格式的疑问
你拿到的这个坐标串完全是标准的WGS84经纬度路线格式:
- 空格分隔的每一组
经度,纬度就是路线上的途经点,把这些点依次连接就是一条连续的LineString路径,不是多段独立路线。 - 首尾坐标并没有缺少纬度或经度!只是它们的小数位数比中间点多(中间是3位,首尾是6-7位),这是API返回的精度差异,完全正常,不是格式错误。比如第一个点
12.116821,55.7218827就是经度12.116821,纬度55.7218827,是完整的经纬度对。
然后是在HERE地图展示的具体步骤
这里以常用的HERE Maps JavaScript API为例,给你具体的实现代码:
1. 解析原始坐标串到HERE可识别的格式
首先要把字符串转换成HERE地图需要的点对象,注意HERE的坐标顺序是纬度在前、经度在后,和你拿到的经,纬顺序相反,一定要转换:
// 你的原始坐标字符串 const rawRouteCoords = "12.116821,55.7218827 12.11652,55.72172 12.11607,55.72143 12.11567,55.72115 12.1152,55.72081 12.11495,55.72061 12.11463,55.72031 12.11435,55.72003 12.11409,55.71975 12.11397,55.71959 12.11367,55.71923 12.11334,55.71882 12.11313,55.71855 12.11285,55.71818 12.11269,55.71794 12.11258,55.71774 12.112478,55.7175174"; // 分割并转换为HERE的Point数组 const routePoints = rawRouteCoords.split(' ').map(coordPair => { const [longitude, latitude] = coordPair.split(',').map(Number); return new H.geo.Point(latitude, longitude); // 注意顺序:纬度在前 });
2. 创建LineString并添加到地图
接下来创建路线图形,设置样式后添加到地图,还可以让地图自动适配路线范围:
// 创建LineString对象,加入所有途经点 const lineString = new H.geo.LineString(); routePoints.forEach(point => lineString.pushPoint(point)); // 创建带样式的路线(Polyline) const routePolyline = new H.map.Polyline(lineString, { style: { lineWidth: 4, // 路线宽度 strokeColor: '#e63946' // 路线颜色,这里用红色示例 } }); // 将路线添加到已初始化的map实例中 map.addObject(routePolyline); // 自动调整地图视野,让整条路线完全显示在视图内 map.getViewModel().setLookAtData({ bounds: lineString.getBoundingBox() });
最后验证坐标的有效性
你可以手动核对几个点的位置:比如第一个点对应的是丹麦哥本哈根附近区域,最后一个点也在同一区域,说明这是一条连贯的短路线,完全没有坐标缺失的问题,放心用就好。
内容的提问来源于stack exchange,提问作者showtime
相关产品推荐
相关产品推荐

