thinkphp 百度地图Api坐标计算 A坐标距离B坐标多少公里 并按照距离近的排序 坐标排序 外部字段排序
感谢我磊哥
函数封装方法:
- //计算距离
- /*
- **$a 可多数坐标 就是可数组类型的
- ***$b 是登录者的坐标
- ***ps: lat经度 lng纬度 经度在前纬度在后
- ***
- ***/
- function juli($a, $b)
- {
- // $key[0] = '3uF44dvwWrW7S9GLgBPk3CVh';
- // $key[1] = 'G0APbmvaqwQTqqNVCcRk6gtOlT1DW9r3';
- // $kk = $key[rand(0,1)];
- $juli_api = 'http://api.map.baidu.com/routematrix/v2/riding?output=json&origins=' . $a . '&destinations=' . $b . '&ak=' . 'G0APbmvaqwQTqqNVCcRk6gtOlT1DW9r3';
- // dump($juli_api);exit;
- return os_get($juli_api);
- }
- /**
- * 发送get请求
- * @param url $url 需要get的地址
- * @return json $data 返回数据
- * @author 5heAtMin9 <sheatming@foxmail.com>
- */
- function os_get($url){
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- $data = curl_exec($curl);
- curl_close($curl);
- return $data;
- }
控制器里调用方法:
- $dingdan = M('ying_dingdan')->where($where)->page($p,10)->order('time DESC')->select();
- $zuobiao = array();
- foreach($dingdan as $k=>$r){
- $member = M('ying_member')->where(array('uid'=>$r['uid']))->field('logo,name,lng,lat')->find();/*找出发布者的lat lng*/
- $zuobiao[$k] = $member['lat'].','.$member['lng'];
- }
- /*根据登陆者的经度纬度 算出与发布者的距离*/
- if($post['lat'] != '' && $post['lng'] != ''){
- $a = implode('|',$zuobiao);
- $b = $post['lat'] .','. $post['lng'];
- $c = juli($a,$b);
- $d = json_decode($c,true);
- foreach($dingdan as $k=>$r){
- if(!$post['lat']){
- $dingdan[$k]['juli'] = '';
- }else{
- $dingdan[$k]['juli'] = round(($d['result'][$k]['distance']['value'] / 1000),1);
- }
- }
- $dingdan = M('ying_dingdan')->where($where)->page($p,10)->order('time DESC')->select();
- $zuobiao = array();
- foreach($dingdan as $k=>$r){
- $member = M('ying_member')->where(array('uid'=>$r['uid']))->field('logo,name,lng,lat')->find();/*找出发布者的lat lng*/
- $zuobiao[$k] = $member['lat'].','.$member['lng'];
- }
- /*根据登陆者的经度纬度 算出与发布者的距离*/
- if($post['lat'] != '' && $post['lng'] != ''){
- $a = implode('|',$zuobiao);
- $b = $post['lat'] .','. $post['lng'];
- $c = juli($a,$b);
- $d = json_decode($c,true);
- foreach($dingdan as $k=>$r){
- if(!$post['lat']){
- $dingdan[$k]['juli'] = '';
- }else{
- $dingdan[$k]['juli'] = round(($d['result'][$k]['distance']['value'] / 1000),1);
- }
- }
- $orderFile = array();
- foreach($dingdan as $k=>$r){
- $orderFile[]=$r['juli'];
- }
- array_multisort($orderFile ,SORT_ASC, $dingdan );/*按照距离排序*/
- }
thinkphp 百度地图Api坐标计算 A坐标距离B坐标多少公里 并按照距离近的排序 坐标排序 外部字段排序的更多相关文章
- 深入浅出百度地图API开发系列(1):前言
百度地图API目前在地图API领域越来越受到众多开发者的关注,许多应用都使用到了百度地图API服务,包括博主me,我自己使用做的是Javascript API,根据经验,我想整理出一份系列教程,如果能 ...
- 【百度地图API】如何制作可拖拽的沿道路测距
原文:[百度地图API]如何制作可拖拽的沿道路测距 摘要: 地图测距,大家都会,不就map.getDistance麼.可是,这只能测任意两点的直线距离,用途不够实际啊.比如,我想测试北京天安门到北京后 ...
- 【百度地图API】如何根据摩卡托坐标进行POI查询,和计算两点距离
原文:[百度地图API]如何根据摩卡托坐标进行POI查询,和计算两点距离 摘要: 百度地图API有两种坐标系,一种是百度经纬度,一种是摩卡托坐标系.在本章你将学会: 1.如何相互转换这两种坐标: 2. ...
- 百度地图API二:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图
原文:百度地图API二:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/liusaint1992/ ...
- 百度地图API 地图圈区域并计算坐标点是否在区域内
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍
原文:[百度地图API]如何在地图上添加标注?--另有:坐标拾取工具+打车费用接口介绍 摘要: 在这篇文章中,你将学会,如何利用百度地图API进行标注.如何使用API新增的打车费用接口. ------ ...
- 利用百度地图API,获取经纬度坐标
利用百度地图API,获取经纬度坐标 代码很简单,但在网上没找到现成的获取地图经纬度的页面. 就是想,给当前页面传递一个经纬度,自动定位到此经纬度.然后可以重新选择,选择完返回经纬度. 效果如下: 源代 ...
- PHP+百度地图API+JAVASCRIPT实现GPS坐标与百度坐标转换的实例
原文:PHP+百度地图API+JAVASCRIPT实现GPS坐标与百度坐标转换的实例 <!--小幅的坐标转换点位程序--> <!DOCTYPE html> <html&g ...
- 【地图功能开发系列:二】根据地址名称通过百度地图API查询出坐标
根据地址名称通过百度地图API查询出坐标 百度地图ApiUrl string url = "http://api.map.baidu.com/geocoder?address={0}& ...
随机推荐
- python3 图片文字识别
最近用到了图片文字识别这个功能,从网上搜查了一下,决定利用百度的文字识别接口.通过测试发现文字识别率还可以.下面就测试过程简要说明一下 1.注册用户 链接:https://login.bce.baid ...
- MultipartFile文件编码判断
MultipartFile文件编码判断 搜索:Java 判断文件的字符集编码 https://blog.csdn.net/top_code/article/details/8891796 但是在Mul ...
- win7&win10 右键添加 cmd
修改注册表,位置有 3 个,重复即可: 桌面右键: HKEY_CLASSES_ROOT\Directory\Background\shell 文件夹右键:HKEY_CLASSES_ROOT\Direc ...
- go微服务框架go-micro深度学习(四) rpc方法调用过程详解
上一篇帖子go微服务框架go-micro深度学习(三) Registry服务的注册和发现详细解释了go-micro是如何做服务注册和发现在,服务端注册server信息,client获取server的地 ...
- Java编译过程(传送门)
我不是要做一门编程语言,了解这个对我现在的工作也没什么帮助,纯粹好奇而已. 传送门
- mysql 动态增加列,查找表中有多少列,具体什么列。 通过JSON生成mysql表 支持子JSON
好消息, 程序员专用早餐机.和掌柜说 ideaam,可以节省20元. 点击链接 或復·制这段描述¥k3MbbVKccMU¥后到淘♂寳♀ 或者 淘宝扫码 支持下同行哈 ---------------- ...
- SQL Server does not purge row versioning records even the transaction are committed if there are other open transaction running in the databases with read-committed snapshot enabled .
This is a by-design behavior. There is only one allocation unit in tempdb that istracking the versio ...
- yaf项目将500错误打印到页面上
一般在yaf项目调试的时候,如果代码有错误,页面只会响应500错误,但看不到哪里报了什么错误,通过开启yaf的一个配置可以将错误信息显示在页面上. 打开项目的index.php入口文件,在开头加入如下 ...
- 从零开始搭建FAQ引擎--基于ES的字面匹配
从零开始搭建FAQ引擎--基于ES的字面匹配
- py-faster-rcnn 训练参数修改(转)
faster rcnn默认有三种网络模型 ZF(小).VGG_CNN_M_1024(中).VGG16 (大) 训练图片大小为500*500,类别数1. 一. 修改VGG_CNN_M_1024模型配置文 ...