解决高德地图的路径信息展示问题

278 阅读1分钟

一、问题描述

路径规划信息应该在对应线的中点附近, 如果地图上存在三个及以上的点,路径信息的最优展示位置是在多边形的区域外

image.png

二、解决思路

1. 根据给出的坐标点确定一个区域(三角形/多边形)

image.png

2. 根据起始点获取中点的位置,然后获取中点上下左右四个方位的点

image.png

3. 通过AMap.GeometryUtil.isPointInRing判断步骤2中获得的4个点中哪些点在三角形区域外,如果拿到的点数多于两个,则进入步骤4,否则直接进入步骤5

image.png image.png image.png

4. 通过AMap.GeometryUtil.distanceToLine计算出步骤3中获得的点距离当前直线的距离,取距离线最远的两个点,进入到步骤5

5. 根据以上步骤获取的点可以确定覆盖物的方位以及偏移方向

  • 一个点
哪个方位的点label的方位label的偏移量
x: 0; y: height
x: 0; y: -height
x: -height; y: 0
x: height; y: 0
  • 两个点
哪个方位的点label的方位label的偏移量
上,右x: height; y: -height
下,右x: height; y: -height
上,左x: -height; y: -height
下,右x: height; y: height
上,下x: 0; y: height
左,右x: height; y: 0