项目要求:

1.使用定位,获取gps信息

2.获取当前所在城市

3.从该城市中取数据,按照距离我的当前位置远近排序

方案

1.使用js获取当前位置信息,然后使用cookie或者session存储

  1. function showPosition(position)
  2. {
  3. var lat = position.coords.latitude;
  4. var lon = position.coords.longitude;
  5. var baseUrl = '{|:U(GROUP_NAME.'/Index/position')|}';
  6. //baseUrl += '?lat='+position.coords.latitude+'&lon='+position.coords.longitude;
  7. $.post(baseUrl,{lat:lat,lon:lon},function(data){
  8. location.reload();
  9. // alert(data);
  10. });
  11. }
  12. //js调用函数
  13. function getLocation()
  14. {
  15. if (navigator.geolocation)
  16. {
  17. navigator.geolocation.getCurrentPosition(showPosition);
  18. }
  19. }

2.将gps坐标转换成高德坐标,并获取所在城市 直辖市的city为空(保存在province属性中)

  1. http://restapi.amap.com/v3/geocode/regeo?location=108.948711,34.230511&key=b7e6f37cfbf325818525241fc3616e7f&s=rsv3&radius=1000&extensions=all
  2. 注意:1.经纬度小数点后只能6
  3. 2.extensions 可取 base(当前位置基本信息) all(周边信息)
  4. Php
  5. //根据高德坐标获取所在城市
  6. function getAmapCity($lng,$lat,$default='北京'){
  7. $res = file_get_contents('http://restapi.amap.com/v3/geocode/regeo?location='.$lng.','.$lat.'&key=b7e6f37cfbf325818525241fc3616e7f&s=rsv3&radius=1000&extensions=base');
  8. $res = json_decode($res);
  9. if($res->info == 'OK'){
  10. return explode('市',$res->regeocode->addressComponent->city)[0];
  11. }else{
  12. return $default;
  13. }
  14. }

3.计算两个坐标的距离

  1. //计算地图两点间距离
  2. function getShortDistance ( $lngx, $latx, $lngy, $laty )
  3. {
  4. $DEF_PI = 3.14159265359; // pi();
  5. $DEF_2PI = 6.28318530712; // 2 * $DEF_PI;
  6. $DEF_PI180 = 0.01745329252; // $DEF_PI/180.0;
  7. $DEF_R = 6378.137; // radius of earth
  8.  
  9. // 角度换弧度
  10. $radLat1 = $lngx * $DEF_PI180;
  11. $radLat2 = $lngy * $DEF_PI180;
  12.  
  13. $a = $radLat1 - $radLat2;
  14. $b = ( $latx * $DEF_PI180 ) - ( $laty * $DEF_PI180 );
  15. $s = 2 * sin(sqrt(pow(sin($a/2),2) + cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)));
  16. $s = $s * $DEF_R;
  17. $distance = round($s * 1000);
  18. return $distance;
  19. }

小型网站使用高德地图开发定位模块需要的php代码的更多相关文章

  1. Android高德地图开发具体解释

    这段时间开发的时候用到了高德地图,对高德地图开发有心得体会,如今分享给大家.对我开发过百度地图的我来说,整体来说高德地图Demo,没有百度解说的具体 个人更偏向于使用百度地图,可是没办发,项目须要使用 ...

  2. 【高德地图开发4】---增加覆盖物setMapTextZIndex

    高德地图 Android SDK 允许用户将添加的线.面等覆盖物设置在地图底图文字的上方或下方. 具体实现是使 用 AMap 类的 setMapTextZIndex() 方法来设置地图底图文字的z轴指 ...

  3. 在vue中使用高德地图开发,以及AMap的引入?

    百度引入BMap ,一个import 即可,可AMap 却报AMap is not difined ? 1.首先在 externals: { "BMap": "BMap& ...

  4. 高德地图开发之获取SHA1码

    通过Android Studio获取SHA1 第一步.打开 Android Studio 的 Terminal 工具. 第二步.输入命令:keytool -v -list -keystore  key ...

  5. 安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)

    高德地图开发时需要导入的包在下面的网盘链接中:(由于高德地图api更新得太快,官网上最新的包使用起来没有之前的方便,所以以下提供最全面的原始包) 链接:http://pan.baidu.com/s/1 ...

  6. [WEB地图] 2017高德地图API WEB开发(key申请,地图搭建)简约教程

      前端时间因为公司需要研究 了一下百度的教程 然后写个简约的笔记记录一下自己学习的收获,只为了满足自己暂时的写作热情   高德地图WEB开发(key申请.api)简约教程 1.首先我们需要去“高德地 ...

  7. 引用第三方高德地图接口---使用js脚本进行开发地图定位的步骤

    ①在高德地图开发平台注册一个账号,获取key ②添加新的key ③引入map插件 ④复制过来map的脚本代码和编写搜索框 <script type="text/javascript&q ...

  8. android开发对应高德地图定位服务进度一

    进行android的高德地图开发首先需要进入高德地图的控制台进行注册登录.之后创建新的应用并且绑定软件得到相应的key. 这里面需要找到自己软件对应的多个SHA1.这里有发布版和调试版,以及对应的软件 ...

  9. iOS:高德地图的使用

    本人花了点时间集成了高德地图的几乎所有的功能,包含:地图的显示.地图的绘制.地图的定位.地图的POI数据检索.地图的线路规划.地图导航等下载地址如下:https://github.com/xiayua ...

随机推荐

  1. iOS Message from debugger: Terminated due to memory issue ~解决方法

    一.概念: /** 1.内存管理概念 2.查看其他技术分享结论 3.产生崩溃原因 4.解决方法以及思路 CSND: https://blog.csdn.net/shihuboke/article/de ...

  2. Atitit 创业好处 Atitit 为什么我们要创业

    Atitit 创业好处 Atitit 为什么我们要创业 1.1. 提升学历 1 1.2. 提升自己的能力 1 1.3. 拓展视野 站在高层ceo 才能掌握全局.站在产业链高层,才可看到趋势. 1 1. ...

  3. Atitit 烈火计划进展报告 r61

    Atitit 烈火计划进展报告 r61 1. 烈火计划主要包括几个东西 1 1.1. 2014.12 邮箱编码读取 1 1.2. 2017.1  垂直领域图片下载器  草料图片下载器 1 1.3. q ...

  4. 【翻译】Nginx的HTTP负载均衡

    本文为翻译文,原文地址:http://nginx.org/en/docs/http/load_balancing.html 介绍 将请求负载均衡到多个应用实例是一个常用的技术,它起到优化资源使用率.最 ...

  5. Asp.Net \uxxx Unicode编码解码

    /// <summary> /// Unicode编码 /// </summary> /// <param name="str"></pa ...

  6. 进一步聊聊weight initialization

    深度学习模型训练的过程本质是对weight(即参数W)进行更新,这需要每个参数有相应的初始值. 有人可能会说:"参数初始化有什么难点?直接将所有weight初始化为0或者初始化为随机数!&q ...

  7. vue环境下安装npm,启动npm 修改js,css样式

    vue环境下修改js,css样式 1.在所在的项目项目的resource 文件夹下面,shift + 鼠标右键--在此处打开命令行窗口: 2.在打开的窗口执行: 安装npm:npm install 启 ...

  8. mybatis-plus忽略映射字段

    mybatis-plus使用对象属性进行SQL操作,经常会出现对象属性非表字段的情况,忽略映射字段使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又 ...

  9. struts与servlet共存

    <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2 ...

  10. 【QT】文件读写操作

    读取输出: QFile file("D:/Englishpath/QTprojects/1.dat"); if(!file.open(QIODevice::ReadOnly)) { ...