项目要求:

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

2.获取当前所在城市

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

方案

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

function showPosition(position)
{
var lat = position.coords.latitude;
var lon = position.coords.longitude;
var baseUrl = '{|:U(GROUP_NAME.'/Index/position')|}';
//baseUrl += '?lat='+position.coords.latitude+'&lon='+position.coords.longitude;
$.post(baseUrl,{lat:lat,lon:lon},function(data){
location.reload();
// alert(data);
});
}
//js调用函数
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
}

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

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

3.计算两个坐标的距离

//计算地图两点间距离
function getShortDistance ( $lngx, $latx, $lngy, $laty )
{
$DEF_PI = 3.14159265359; // pi();
$DEF_2PI = 6.28318530712; // 2 * $DEF_PI;
$DEF_PI180 = 0.01745329252; // $DEF_PI/180.0;
$DEF_R = 6378.137; // radius of earth // 角度换弧度
$radLat1 = $lngx * $DEF_PI180;
$radLat2 = $lngy * $DEF_PI180; $a = $radLat1 - $radLat2;
$b = ( $latx * $DEF_PI180 ) - ( $laty * $DEF_PI180 );
$s = 2 * sin(sqrt(pow(sin($a/2),2) + cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)));
$s = $s * $DEF_R;
$distance = round($s * 1000);
return $distance;
}

小型网站使用高德地图开发定位模块需要的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. zabbix之微信告警(python版):微信个人报警,微信企业号告警脚本

    微信个人告警脚本 微信个人告警:使用个人微信,发送到微信群组,微信好友 两个脚本执行: 1)能连接网络2)先执行server.py,扫描登录微信,登录之后没有报错,打开新终端查看端口是否起来了3)在z ...

  2. python爬虫高级功能

    上一篇文章中我们介绍了爬虫的实现,及爬虫爬取数据的功能,这里会遇到几个问题,比方站点中robots.txt文件,里面有禁止爬取的URL.还有爬虫是否支持代理功能.及有些站点对爬虫的风控措施.设计的爬虫 ...

  3. Mysql Binlog三种格式详细介绍

    一.MySQL Binlog格式介绍 mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 查看binlog的格式的脚本: 二.binlog 的不同模式有什么区别 ...

  4. paste

    echo "step 1" >> steplog.txt    echo "step 1"        sudo apt-get install ...

  5. js判断移动端是否安装某软软件,安装直接打开相应的链接,否则跳转到下载商店方法

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  6. virtualbox安装android6.0并设置分辨率为1920x1080x32

    下载安装:https://www.cnblogs.com/wynn0123/p/6288344.html 这里我做的是下载android6.0-64bit,然后文件系统只支持ext4 安装完成之后我的 ...

  7. Direct3D 11 Tutorial 7:Texture Mapping and Constant Buffers_Direct3D 11 教程7:纹理映射和常量缓冲区

    概述 在上一个教程中,我们为项目引入了照明. 现在我们将通过向我们的立方体添加纹理来构建它. 此外,我们将介绍常量缓冲区的概念,并解释如何使用缓冲区通过最小化带宽使用来加速处理. 本教程的目的是修改中 ...

  8. Kubernetes集群部署之四Master节点部署

    Kubernetes Master节点部署三个服务:kube-apiserver.kube-controller-manager.kube-scheduler和一个命令工具kubectl. Maste ...

  9. Windows 安装服务 的两种方式

    第一种   -  安装服务时自定义服务名称:(注意 binpath= 和路径之间的那个空格)sc create 服务名称  binpath= "D:\Service.exe" di ...

  10. etl数据同步工具 kettle

    kellet使用 https://www.cnblogs.com/gala1021/p/7814712.html