百度地图JS关于规划路线偏离预警的解决方式

2020-02-24 18:43:54

参考地址 百度地图JS关于规划路线偏离预警的解决方式

说实在的这个解决方案有点low,我并不会很赞成,效率有点低。如果多的话,很是耗费资源。

我推荐使用矩形来解决这个问题,而不是圆形。

当日用矩形的话,就要确保轨迹是折线的,而不是弧线等。


如果要用到路线偏离的算法首先到导入GeoUtils_min.js


这个js里面有多中算法:1.坐标点是否在圆内  2.坐标点是否在线上 3.点是否在多边形上等等


使用场景:因为我们这个项目是关于危化品运输,需要给危化品车辆规定一条行驶的路径,车辆只能按照规定路线走,一旦超过了规定路线的偏离距离,系统就会预警!


1.引入GeoUtils_min.js


2.获取规划好路径的坐标点集合 ,我们这里假设为:车辆当前坐标为 point   规定路线坐标集合:points


3.遍历坐标集合,以每一个坐标点为圆心,创建圆


   for(var i=0;i<points.length;i++){

   var c =points[i]; //圆心 

   var circle = new BMap.Circle(c, 200);//测试圆 200代表圆的半径距离 单位:米

   circles.push(circle);

}


4.//循环遍历判断车辆当前坐标点是否在圆里

var flag = false;

for(var i=0;i<circles.length;i++){

var result = BMapLib.GeoUtils.isPointInCircle(point, circles[i]); //point:当前坐标点、circles[i]:规划好的圆

   if(result == true){ //true:点是在圆圈里

      flag=true;

      break;

   }

}


5.最后的flag为true说明点在园内,没有超过偏离值,总的来说路径偏离预警这种实现方式还是比较简单的。


  • 2018-02-02 15:19:29

    贝塞尔曲线扫盲

    相信很多同学都知道“贝塞尔曲线”这个词,我们在很多地方都能经常看到。但是,可能并不是每位同学都清楚地知道,到底什么是“贝塞尔曲线”,又是什么特点让它有这么高的知名度。

  • 2018-02-04 23:46:16

    Android SQLite 升级数据库,在原有数据库的基础上添加一列

    原本以为很简单的问题,直接在原来创建数据库的语句中加上需要添加的列new_column,但是运行时发现,应用crash。原因是,原有数据库文件已经存在的情况下并不会重新创建数据库,也就是说此时数据库中并没有new_column列,这个时候,运行query()来查询数据库如果包括new_column列,就会导致应用crash。

  • 2018-02-06 22:23:01

    HTML5 Canvas 的事件处理

    DOM是Web前端领域非常重要的组成部分,不仅在处理HTML元素时会用到DOM,图形编程也同样会用到。比如SVG绘图,各种图形都是以DOM节点的形式插入到页面中,这就意味着可以使用DOM方法对图形进行操作。比如有一个<path id=”p1″>元素,可以直接用jquery增加click事件$(‘#p1’).click(function(){…})”。然而这种DOM处理方法在HTML5的Canvas里不再适用,Canvas使用的是另外一套机制,无论在Canvas上绘制多少图形,Canvas都是一个整体,图形本身实际都是Canvas的一部分,不可单独获取,所以也就无法直接给某个图形增加JavaScript事件。

  • 2018-02-09 01:32:48

    PHP时间戳和日期相互转换

    在php中我们要把时间戳转换日期可以直接使用date函数来实现,如果要把日期转换成时间戳可以使用strtotime()函数实现,下面我来给大家举例说明。

  • 2018-02-09 02:57:46

    如何防止多次打开Activity?

    android:launchMode="singleTask" 加上这句,每次打开如果已有此activity,就会打开原来的实例,否则会创建新的activity​