1.限定了范围大概前台方圆50m范围内(公司在71楼,260m)
2.签到不需要让客户知道,所以只有摇一摇事件,没有界面。
3.公司前台的坐标能够拿到,我写定了。
4.我的做法是 :用自带的CoreLocation框架,拿到客户定位经纬度坐标,得到与前台的经纬度之间的距离(单位:米),距离小于50,则可以进行签到。
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
/** 获取到最新的坐标 */
let currentLocation : CLLocation = locations.last!
let currentLongitude = currentLocation.coordinate.longitude
let currentLatitude = currentLocation.coordinate.latitude
/** 客户坐标和目标坐标之间的距离 */
let distance : CLLocationDistance = currentLocation.distanceFromLocation(SQLocation)
finalDistance = distance
distanceLabel.text = String(format: "距离SQ公司:%.2f 米",finalDistance)
}
现在的问题是 : 用移动网络定位,效果很差劲,精确度比wifi下定位精确度低,信号不好剩下1格的时候,更新定位距离设为1m,也很久不更新定位。
有没有精确度高点的方案,难度小点,或者可以进行改进的地方。
需要使用高德地图吗,我只需要用户的定位,不做别的,自带的定位CoreLocation,难道满足不了?
题主的方案,可以选择第三方定位方案,如所说的高德,或者百度。可以参考相关API,百度定位iOS SDK
这个估计不行,定位很坑爹的,有时候距离实际坐标好几百米,只能换种思路了,或者把50m的限制扩大
现在市场上室内定位比较常用的是蓝牙和WLAN
要求客户开启蓝牙/WLAN就可以用iOS的CoreLocation获取位置信息了
(需要等iOS上传相应的WLAN、蓝牙的数据以及位置信息回服务器)
你这样的需求,对比附近的WLAN、蓝牙设备mac地址就可以实现了
使用BLE开发板或者直接购买个ibeacon小设备,放到前台。可以精确到厘米级 也可以到10米+
Android /iOS可以直接进行近距离测距
iOS与Android都有相应的SDK
另外也可以使用微信摇一摇的方式,按照微信的协议集成
看了看楼主的发帖列表
建议楼主善用谷歌
不行多百度
这种问题随便搜一下就一大堆