天天看点

vue获取元素距离顶部的距离_4种地图距离的获取方式

获取实际地图地址各个节点间距离4种方式比较实用的方式:

  1. 半正矢公式;
  2. 百度-批量算路;
  3. 高德-距离测算;
  4. Graphhopper-Routing API(开源代码);

百度和高德

半正矢公式 百度-批量算路 高德-距离测算 Graphhopper-Routing API
支持模式 1、直线 1、驾车2、骑行3、步行 1、直线2、驾车3、步行 1、car2、bike3、foot4、hike5、mtb6、racingbike7、scooter8、truck9、small_truck
驾车策略 1、不走高速(考虑路况)2、常规路线(考虑路况)3、距离较短 1、考虑路况避拥堵 1、不考虑路况
坐标系 bd09ll amap WGS84
资源使用 1、公式简单,可毫秒级别生成距离矩阵;2、和现实场景相当不匹配 1、每日配额有限;2、非企业级用户单次请求最大路线数50;3、有并发;4、较准确5、慢 1、每日配额有限;2、单次请求最大路线数100;3、有并发;4、较准确5、慢 1、开源代码,可离线部署不受资源限制, 需要改造接口;2、离线地图包对国内实际路况不全导致部分距离离谱,耗时很短

1. 半正矢公式

网上有很多关于公式的介绍,这里一袋而过了,公式如下所示:

vue获取元素距离顶部的距离_4种地图距离的获取方式

其中,

vue获取元素距离顶部的距离_4种地图距离的获取方式

vue获取元素距离顶部的距离_4种地图距离的获取方式

分别是纬度和经度的弧度;

vue获取元素距离顶部的距离_4种地图距离的获取方式

代表地球半径。

2. 百度-批量算路

  • 网址:Web服务API | 百度地图API SDK
  • 入口:搜索-百度地图API → 开发文档 → Web服务API → 批量算路
vue获取元素距离顶部的距离_4种地图距离的获取方式
vue获取元素距离顶部的距离_4种地图距离的获取方式
  • 推荐:服务文档中介绍了接口文档,ak字段需要在控制台中新建应用获得,具体的内容文档中描述比较详细。对接口请求较陌生的话可以先用postman试一试,其次推荐使用python相比java的http请求的包装工具更简单。
  • 特色:提供是否考虑路况的选择,仿真的时候推荐使用不考虑路况,考虑路况每隔一段时间距离和耗时都会变。

3. 高德-距离测算

  • 网址:路径规划-API文档-开发指南-Web服务 API | 高德地图API
  • 入口:搜索-高德地图API → 开发支持 → Web服务API → 路径规划 → 距离测算
vue获取元素距离顶部的距离_4种地图距离的获取方式
vue获取元素距离顶部的距离_4种地图距离的获取方式
  • 推荐:同百度地图一样
  • 特色:高德地图的接口比较人性化,页面自带请求工具,可视化数据结构。自带origin_id和dest_id不用苦恼被阉割后的距离矩阵怎么拼接了。
vue获取元素距离顶部的距离_4种地图距离的获取方式

4. Graphhopper-Routing API(开源代码)

网址:https://github.com/graphhopper/graphhopper

Matrix API是专门用于TSP/VRP拼接距离邻接矩阵,虽说是收费,但是注册的时候国家没找到国内,体验不了试用版了。没关系Graphhopper提供了部分java的开源代码,其中就包含了Routing API,它能计算两个节点间的距离和耗时,这样就通过多次请求就可以拼装出距离矩阵了。假如我们有M个节点,请求该接口M*(M-1)次就可以了,但是考虑通信的耗时,建议在源码中提供的custom上做批量的二次开发(关于接口路径在下面图中)。速度嘛是比高德、百度快很多,不考虑网络的影响平均20ms处理一条线路,当然也可以开启加速模式开启turn_cost。

vue获取元素距离顶部的距离_4种地图距离的获取方式
vue获取元素距离顶部的距离_4种地图距离的获取方式