latitude

Geo redis实现附近的车辆/人

柔情痞子 提交于 2019-11-26 21:13:11
前段时间业务需要实现一个用户查看附近车辆的服务:用户根据自己的定位坐标(经度、纬度)来快速搜索到附近的车辆,可以根据半径进行搜索。 根据需求也制定了几个技术方案,思路是这样的:将用户的坐标跟数据库中各个车辆的最新坐标进行距离计算,找到指定距离内的车辆并按照距离从小到大排序返回给业务。这种方法需要找到每辆车的最新定位,数据库中车辆定位数庞大,查询时数据库压力较大,并且每辆车需要计算一次距离,整个流程的耗时耗费数据库资源可想而知。考虑第二种方案,因为现在业务所有车辆的最新定位都保存在缓存中(memcached),可以采用把所有车辆的定位先从缓存中拿出来,然后进行距离计算,这种方法同样存在问题,就是操作缓存过于频繁。 以上两种方案,都是通过计算距离来判断的,后来发现geohash算法在这方面很高效(geohash原理参加 http://blog.jobbole.com/80633/ )。于是将该思路应用到以上两个方案中,无非是多保存一份每个定位点的geohash值,然后根据该hash值来进行排序找到附近的车(当然该hash值在数据库中做索引)。沿着这个思路的技术实现也考虑了一些,等技术实现(具体实现思路就不啰嗦了)基本考虑好的时候,突然发现redis 自带的geo api能够完美地解决该问题。于是,啥也别说,直接使用现成的就好啦。 闲聊结束,直接操作,按照步骤来就能轻松搞定: 一

iPhone&iPod Touch定位编写

安稳与你 提交于 2019-11-26 10:14:50
1. 使用UIMapView的showUserLocation属性。 myMapView.showsUserLocation = YES 显示后读出坐标经纬度: self.userLocation.coordinate.latitude self.userLocation.coordinate.longitude 2. 使用CLLocationManager locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBest; //选择最优定位 [locationManager startUpdatingLocation]; 定位后在委托方法中读出经纬度: - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 前两种方法是利用Core Location框架来定位,按照GPS,蜂窝基站(Cell Tower),Wi-Fi的顺序选取最后方案定位: a.

百度地图:通过经纬度获得位置信息和距离

不打扰是莪最后的温柔 提交于 2019-11-26 07:41:53
获取位置性息:先通过微信公众号获得经纬度,然后根据经纬度换取位置 <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script> <script> var signature = '@ViewBag.signature'; //微信 wx.config({ debug: false, appId: '211', timestamp:12 , nonceStr: '121', signature: signature, jsApiList: [ 'getLocation'] }); wx.ready(function () { wx.getLocation({ success: function (res) { var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90 var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。 var speed = res.speed; // 速度,以米/每秒计 var accuracy = res.accuracy;