美文网首页
Whlove应用中的位置实现

Whlove应用中的位置实现

作者: hzqtx | 来源:发表于2015-12-04 22:45 被阅读40次

位置信息是移动网络中的一个关键信息,在社交、本地生活服务等互联网服务中有很多应用。比如微信里面有附近的人,发布朋友圈可以显示当前的位置,QQ群里面可以先 显示成员距离自己的距离等。
武汉高校之恋匹配社区作为一个社交应用,也很有必要引入位置服务,为用户提供更多功能和更好的用户体验。

1. 位置应用模块

  • online
    用户列表上显示用户距离自己的距离。
  • 匹配功能
    增加一个距离限制条件,提供贴心的用户体验。
  • 语音社区
    发帖显示当前的位置
    其他的待开发,比如商业化的话,可以加上本地商业服务什么的...

2. 技术实现分析

2.1 获取位置经纬度

  • 方法一:微信开放接口
    先使用微信接口获取经纬度信息,再使用百度api得到位置信息。


    JSSDK中有接口

从微信获取到的地理坐标是基于google的,而百度有自己的标准,所以需要做一个转换,将google的地理坐标换成百度标准的经纬度。

使用url请求的方式 :
<code>http://api.map.baidu.com/geoconv/v1/coords=114.21892734521,29.575429778924;114.21892734521,29.575429778924&from=1&to=5&ak=你的密钥</code>

百度API说明1

  • 方法二:IP获取地址
    js先获取设备当前的ip
    <code>
    <script language="javascript" type="text/javascript" src="http://fw.qq.com/ipaddress"> </script>
    <script>document.write("你的IP是:"+IPData[0]+",来自:"+IPData[2]); </script>
    </code>

然后使用百度地图api获取位置信息

ip获取位置信息

百度API说明2

  • 方法三:HTML5
    HTML5 Geolocation(地理定位)

<code>function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else
{x.innerHTML="该浏览器不支持获取地理位置。";}
}</code>

参考链接

2.2 经纬度计算距离

地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为 6356.755千米,平均半径6371.004千米。
如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R。

如果以0度经线为基 准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,仅仅是理论上的估算值)。

设第一点A的经 纬度为(LonA, LatA),第二点B的经纬度为(LonB, LatB),按照0度经线的基准,东经取经度的正值(Longitude),西经取经度负值(-Longitude),北纬取90-纬度值(90- Latitude),南纬取90+纬度值(90+Latitude),则经过上述处理过后的两点被计为(MLonA, MLatA)和(MLonB, MLatB)。

那么根据三角推导,可以得到计算两点距离的如下公式:

C = sin(MLatA)sin(MLatB)cos(MLonA-MLonB) + cos(MLatA)*cos(MLatB)

Distance = RArccos(C)Pi/180

这里,R和Distance单位是相同,如果是采用6371.004千米作为半径,那么Distance就是千米为单位.

引用链接

2.3 由经纬度查询位置地名

百度Geocoding API 功能示意图

json示例:
http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderReverse&location=39.983424,116.322987&output=json&pois=1

Paste_Image.png

百度API说明3

2.4 位置信息的存储

可以存储用户最近的位置经纬度,使用kv方式存储,方便查找;
在user里面加一个字段?

另外,html5中的位置功能还没调研。。。

相关文章

  • Whlove应用中的位置实现

    位置信息是移动网络中的一个关键信息,在社交、本地生活服务等互联网服务中有很多应用。比如微信里面有附近的人,发布朋友...

  • Android开发实现模拟定位

    此功能是基于开发者模式中的模拟位置信息应用实现,目前基本实现点击地图设置虚拟定位功能,唯一遗憾的是目前会被第三方 ...

  • HTTP协议总结

    1.在TCP/IP协议簇中的位置 位于四层协议的应用层。基于运输层的TCP协议实现。 2.请求报文结构 包括报文首...

  • Flutter - 登录动画

    在Flutter应用程序中实现超级流畅的动画 在这篇文章中,我将带您完成在Flutter应用程序中实现流畅动画的步...

  • 按钮位置

    一、文章应用范围 web端应用 二、按钮区的位置 按钮区位置的设计策略:应将按钮放置于用户浏览路径中,便于被用户发...

  • 实现跨Linux服务器共享应用程序的上传文件

    目的与实现方案 应用集群中,应用共享/usr/App/.../app.war/files目录下的文件。如图(实现方...

  • Android中退出应用的实现

    退出应用是项目开发中很基本的一个需求,这个功能很简单,也有很多实现的方式,这里把自己知道的退出方法做一个整理,跟大...

  • this绑定规则优先级

    现在了解了函数调用中this绑定的四条规则,需要做的是找到函数的调用位置并判断应用了哪条规则。如果调用位置应用多条...

  • Android8.0适配前台定位服务service

    从Android 8.0开始系统为实现降低功耗,对后台应用获取用户位置信息频率进行了限制,每小时只允许更新几次位置...

  • 列表、元组、字典

    一、列表: 概述: 列表(lilst)= ["/"]索引:数据在列表中的位置编号。 应用: list = ["/"...

网友评论

      本文标题:Whlove应用中的位置实现

      本文链接:https://www.haomeiwen.com/subject/pcbshttx.html