<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak='自己申请'&s=1"></script>
<script type="text/javascript" charset="utf-8">var geolocation = new BMap.Geolocation();geolocation.getCurrentPosition(function (r) {if (this.getStatus() == BMAP_STATUS_SUCCESS) {var lat = r.point.lat;var lng = r.point.lng;}// return;var data = {'lat': lat, 'merchid': "{$item['id']}",'classid': "{$classitem['id']}", 'lng': lng};$.ajax({url: "{php echo mobileUrl('shop/category/ajaxcodot')}",data: data,cache: false}).done(function (result) {var data = jQuery.parseJSON(result);if (data.status == 1) {if(data.result.code == 1){console.log(data.result.code)$(".shop").html(data.result.html)// $("#coll").hide()
                    }else{$(".shop").hide()$(".noinfo").show()}} else {alert("微信接口繁忙,请稍后再试!");}});  })</script>

首先定位当前位置

    public function ajaxdot()//查询结果页{global $_W;global $_GPC;$province = $_GPC['province'];$city = $_GPC['city'];$area = $_GPC['area'];$classid = $_GPC['classid'];$lat = floatval($_GPC['lat']);$lng = floatval($_GPC['lng']);$merch = pdo_fetch('SELECT * FROM ' . tablename('ewei_shop_merch_user') . ' WHERE id = '.$_GPC['merchid']);           $where = 'where 1';$where.= " and province = '$province'";if($merch['cateid'] != 6)$where.= " and company_number = '{$merch['company_number']}'";if(!empty($city)){$where.= " and city = '$city'";}        if(!empty($area)){$where.= " and area = '$area'";}if($merch['cateid'] == 1 && $classid){//  var_dump($classid);exit;$class = pdo_fetch('SELECT class_type FROM ' . tablename('ewei_shop_merch_user_class') . ' WHERE id = '.$classid);  $class_type = $class['class_type'];$where.= " and class_type = '$class_type'";}        if(!empty($_GPC['classid'])){$classitem = pdo_fetch('SELECT * FROM ' . tablename('ewei_shop_merch_user_class') . ' WHERE id = :classid',array('classid' => $_GPC['classid']));            }$table = tablename('ewei_shop_merch_user_address');if($merch['cateid'] == 6){if($merch['company_number'] == 'TXDX001'){$where.= " and class_type = 'DX'";}else if($merch['company_number'] == 'TXDX002'){$where.= " and class_type = 'YD'";}else if($merch['company_number'] == 'TXDX003'){$where.= " and class_type = 'LT'";}$table =tablename('ewei_shop_merch_tx_address');}$detail = pdo_fetchall("SELECT * FROM $table " ."$where");// var_dump($detail);if($detail){$html = '';foreach ($detail as $key=>$v) {if($v['lat'] == '' || $v['lng'] == ''){$lntarr = $this->addresstolatlag($v['detail']);$store['lng'] = $lntarr[0];$store['lat'] = $lntarr[1]; // var_dump($lntarr);$lat_num = explode('.', $store['lat']);if (1 < sizeof($lat_num)) {$decimal = end($lat_num);$count = strlen($decimal);if ($count <= 6) {$gcj02 = $this->Convert_GCJ02_To_BD09($store['lat'], $store['lng']);$store['lat'] = $gcj02['lat'];$store['lng'] = $gcj02['lng'];}}$distance = m('util')->GetDistance($lat, $lng, $store['lat'], $store['lng'], 2);$where = array();$where['id'] = $v['id'];pdo_update('ewei_shop_merch_user_address', $store,$where);}else{$distance = m('util')->GetDistance($lat, $lng, $v['lat'], $v['lng'], 2);}$detail[$key]['distance'] = $distance;$flag[] = $distance;}array_multisort($flag, SORT_ASC, $detail); //按距离排序foreach ($detail as $key=>$v) {$distance = $v['distance'];$html.='<div class="iimg"><img id="" width="110" src="../addons/ewei_shopv2/static/img/4S.jpg" alt="" /></div><div class="info"><p class="s_title">'.$v["shopname"].'</p><p class="s_address"> '.$v['detail'].'</p><p class="s_address" style="    color: green;"> 距您'.$distance.'km</p><div class="s_bot"><a href="tel:'.$v["tel1"].'" style="color:#000"><div class="bimgl" style="    width: 40px;"><img width="20" src="../addons/ewei_shopv2/static/img/carTel.jpg" alt="" /> </div><div class="btel"> '.$v['tel1'].'</div></a><div class="bimgr" onclick="docollectad('.$v['id'].','.$table.')"><img width="20" src="../addons/ewei_shopv2/static/img/carSC.jpg" alt="" /></div><a href="./index.php?i=4&c=entry&m=ewei_shopv2&do=mobile&r=shop.category.address&merchid='.$merch['id'].'&detail='.$v['detail'].'&shopname='.$v['shopname'].'"><div class="bimgr"><img width="20" src="../addons/ewei_shopv2/static/img/carDW.jpg" alt="" /></div></a><div class="t_clear"></div></div>        </div><div class="t_clear"></div>';}            $arr = array('code' => 1, 'html'=>$html);show_json(1, $arr);           }else{$arr = array('code' => 2);show_json(1, $arr);  }}    

计算距离 并返回 数据

    /*** 计算两组经纬度坐标 之间的距离* params :lat1 纬度1; lng1 经度1; lat2 纬度2; lng2 经度2; len_type (1:m or 2:km);* return m or km*/public function GetDistance($lat1, $lng1, $lat2, $lng2, $len_type = 1, $decimal = 2){$pi = 3.1415926000000001;$er = 6378.1369999999997;$radLat1 = $lat1 * $pi / 180;$radLat2 = $lat2 * $pi / 180;$a = $radLat1 - $radLat2;$b = $lng1 * $pi / 180 - $lng2 * $pi / 180;$s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));$s = $s * $er;$s = round($s * 1000);if (1 < $len_type) {$s /= 1000;}return round($s, $decimal);}

计算距离 函数

    public function Convert_GCJ02_To_BD09($lat, $lng){$x_pi = 3.1415926535897931 * 3000 / 180;$x = $lng;$y = $lat;$z = sqrt($x * $x + $y * $y) - 2.0000000000000002E-5 * sin($y * $x_pi);$theta = atan2($y, $x) - 3.0000000000000001E-6 * cos($x * $x_pi);$data['lng'] = $z * cos($theta) + 0.0064999999999999997;$data['lat'] = $z * sin($theta) + 0.0060000000000000001;
//         var_dump($data);return $data;}public function addresstolatlag($address){$url='http://restapi.amap.com/v3/geocode/geo?address='.$address.'&key=48e598c5f71f20d2cd5a18d6e3142d27';// var_dump(file_get_contents($url));exit;if($result=file_get_contents($url)){$result = json_decode($result,true);//判断是否成功if(!empty($result['count'])){return  explode(',',$result['geocodes']['0']['location']);}else{return false;}}}

校正坐标函数 webapi函数

说明下 由于 客户给的地址 比较乱 只有详细地址 没有坐标
这边利用高德提供的webapi转换了坐标 之后计算的距离

转载于:https://www.cnblogs.com/liiu/p/10175086.html

php+高德地图webapi 高德jsapi 实现 当前位置与目标位置距离 并按照距离排序(坐标逆转换)...相关推荐

  1. 高德地图WebAPI:行驶距离测量

    参考API import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; i ...

  2. 高德地图WebAPI : 驾车路径规划

    参考API 一个demo 获取路径规划返回结果中的两点间最短驾车距离 import java.io.BufferedReader; import java.io.BufferedReader; imp ...

  3. android高德地图瓦片,高德地图加载瓦片分析

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? ##了解瓦片地图 瓦片地图:瓦片地图金字塔模型是一种多分辨率层次模型,从瓦片金字塔的底层到顶层,分辨率越来越低,但表示的 ...

  4. callback用法 js vue_Vue前端开发——使用高德地图WebApi

    要求: 实现关键字搜索 说明: 基于Vue(2.x)+element+高德Web服务api(2.0) 高德地图2.0版本以前的实现方式需要自己封装请求方法,2.0版本提供了个请求服务WebServic ...

  5. 高德地图多点标记 marker JSAPI

    以下内容涉及到一些简单的接口 使用场景是:通过选择某级别的城市或省份,将该级别下的所有具体地址标注到地图上,该场景适合通过地址查询经纬度来标记,以下内容为测试代码.刚看了下API写的,学习阶段,仅供参 ...

  6. qt qml 高德地图--WebAPI 获取静态地图

    高德地图提供了很多Web API,本文展示如何使用Qt + qml 获取静态地图 静态地图Web API https://lbs.amap.com/api/webservice/guide/api/s ...

  7. react 逆地理 高德地图_高德地图又出逆天黑科技!全国各大城市模型直接获取...

    本文转自:公众号"设计气象台" 作者:爱敷面膜的台小妹 高德地图可以做区位分析,想必你应该都知道了. (▲ 高德地图"原配"色系) 但是最近发现,高德地图又新出 ...

  8. js如何同时打开多个信息窗口 高德地图_高德地图-展示多个信息窗口

    1.问题背景 高德地图,设置小图标,并点击图标显示信息 2.实现源码 高德地图展示多个信息窗口 //初始化地图对象,加载地图 var map = new AMap.Map("containe ...

  9. js如何同时打开多个信息窗口 高德地图_高德地图显示单个窗体和显示多个窗体的方法...

    高德地图是我经常使用过的组件,今天想跟大家讨论下信息窗体的创建与显示的方法,这种就是属于自定的内容了,需要到高德开发者中心查看一些相应的文档 image.png LatLng latLng = new ...

最新文章

  1. CocoaPods更新过程中出现的坑及解决方法
  2. WinCE5.0中文模拟器SDK(VS2005,VS2008)的配置
  3. unilever workspace creating space
  4. 从FM推演各深度学习CTR预估模型
  5. LoadRunner常用术语
  6. CVPR2021 最具创造力的那些工作成果!
  7. Python刷题-2
  8. The Dataflow Model: A Practical Approach to Balancing
  9. append从一个添加到另一_小米的另一妙用,制作小米锅巴,吃着嘎嘣脆,一口一个香得很...
  10. [转载] python中union函数_如何掌握Python union()方法及怎么用?
  11. 我在谷歌大脑工作的 18 个月中,是怎样研究强化学习的?
  12. 鲲鹏BoostKit虚拟化使能套件,让数据加密更安全
  13. 网易云通信 java 登录,网易云IM(即时通讯) 集成指南(Android)
  14. paraview启动失败:failed to get wglChoosePixelFormatARB
  15. 全球及中国城市规划行业十四五建设方向与运营动态分析报告2022版
  16. 流处理和批处理框架的异同
  17. 如何去爱一个人[转]
  18. LineRenderer组件
  19. Nginx-rrd监控
  20. python操作excel 2016

热门文章

  1. mysql 配置详解
  2. 学习面向对象编程OOP 第一天
  3. redhat kvm 虚拟机U盘不识别的解决办法
  4. Arduino入门笔记(6):温度传感器及感温杯实验
  5. Android JNI入门第六篇——C调用Java
  6. 安全策略已传播,但有警告信息。0x534:帐户名与安全标识间无任何映射完成
  7. 面试题 02.04. 分割链表
  8. PAT1023. 组个最小数
  9. oracle 查询表里信息_查看ORACLE 数据库及表信息
  10. 翁恺老师C语言学习笔记(十)指针_指针的使用