最近写高德地图的时候遇到一个功能,地图初始化时存在一条轨迹线,用户在地图上可以自己重新编辑一条新轨迹,判断初始化时的轨迹有无偏移。原理就是用户在点击每个点时获取点到线的最短距离,判断距离有无超出限制。
下面就简单说明一下实现过程
①定义一个marker点和line线路数据
export default {
data() {
return {
marker: [118.78518, 32.041471],
line: [
[118.806423, 32.047364],
[118.805221, 32.044272],
[118.804706, 32.040889],
[118.804406, 32.039361],
[118.803977, 32.037797],
[118.803376, 32.036087],
[118.802689, 32.033504],
[118.802217, 32.031358],
[118.801874, 32.02892],
],
},
};
},
②获取点到线距离
methods: {
newmap() {
map = new AMap.Map("map", {
zoom: 12,
center: [120.97527, 31.39308],
mapStyle: "amap://styles/darkblue",
});
var pos = this.marker
var distance = Math.round(AMap.GeometryUtil.distanceToLine(pos, this.line));
// 得到距离
console.log(distance);
}
}