今天有自己拍的照片可以用啦~😃
这两天在跑高速的空闲时间 尝试了各种AI推荐的 网上大神推荐的办法和代码 唉 最终还是乖乖落地了腾讯位置的API 因为其他所有的 特别是在程序里就能实现的技术和第三方库 计算出来的距离 对比腾讯位置 高德地图API计算的结果 相差不少 经过坐标系转换 还是会有不小的误差 总体来说 感觉不是很稳定吧 手上的客户 特别是有本地配送业务需求的 对距离位置计算还是蛮刚需的 如果经常不稳定导致配送费计算不准 客户是要亏钱的 所以现在业务里 暂时还是回归到腾讯位置更新的距离计算API 有兴趣的可以回去查看 [腾讯位置服务]计算两个地理位置间的距离-微信小程序
作为分享的话 贴一下网上查到的资料给推荐的一些第三方库和方法 有兴趣的也可以自己试一下 可能是我这边自己技术不到位或者哪里没调整正确吧 如果有调试好的小伙伴也可以回来给我教学一下 提前感谢无私分享哈~
我这边用的是PHP的第三方库 geotools/geotools 是PHP里最专业的地理计算库 项目地址是下面这个
https://github.com/thephpleague/geotools
安装的话
composer require league/geotools
安装完成之后 新建个业务类 方法是下面这些
public function orderKiloCalculateBis() { $geotools = new Geotools();// 坐标点(纬度, 经度) $coordA = new Coordinate([11.11111111, 11.11111111]); // 起点位置经纬度 $coordB = new Coordinate([11.11111111, 11.11111111]); // 终点位置经纬度 // 使用 Vincenty 公式计算(最精确) $distance = $geotools->distance()->setFrom($coordA)->setTo($coordB); //$vincenty = $distance->vincenty(); // 返回米 $inKm = $distance->in('km')->vincenty(); // 返回公里 // 使用 Haversine 公式计算 $haversine = $distance->in('km')->haversine(); // 使用大地线(大圆)距离 $greatCircle = $distance->in('km')->greatCircle(); return $inKm . " 公里\n" . "大圆距离: " . $greatCircle . " 公里\n" . "Haversine距离: " . $haversine . " 公里\n"; }
可以自己复制了做测试 短距离内 同样的位置和经纬度 测了最少都有2KM+的误差 腾讯位置计算出是14KM 这个本地方法计算出是12.1KM 嗯 应该是我的问题 不是方法的问题 如果有了解的大神 还希望能留言分享一下 感谢
保持好奇 不断进步 下期见~