iOS 发送位置消息
2017-05-02 10:32
155 查看
发送地理位置在社交应用里面是很常用的需求。最近也需要在自己的应用里面加入这个功能
首先我们需要获取自己的地理位置,这里用到 CLLocationManager 这个类,调用如下代码
我们在回调方法里面获取该这个地理位置
如果要达到微信那种预览位置效果的话,我们需要通过位置获取一张截图, 因为我们不可能放一个 mapView 到消息列表上,这样内存肯定受不了。
所以我们使用 MKMapSnapshotter, 这个类可以获取地图上的一小块截图,代码如下
之后的就只需要处理发送位置和接收位置消息了。 如果想看源码可以点击传送门 源码 在 dev 分支
首先我们需要获取自己的地理位置,这里用到 CLLocationManager 这个类,调用如下代码
locationManager = CLLocationManager() locationManager.requestAlwaysAuthorization() locationManager.delegate = self // 在成功获取位置后,就会把位置回调给 self locationManager.distanceFilter = kCLDistanceFilterNone locationManager.desiredAccuracy = kCLLocationAccuracyBest locationManager.startUpdatingLocation() // 在执行这个方法之后,系统就会不断获取手机所在的位置并且把这个位置回调给应用
我们在回调方法里面获取该这个地理位置
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { locationManager.stopUpdatingLocation() // 注意这个地方需要关闭定位,不然会不断的回调这个方法 manager.delegate = nil; // 不加这段代码可能还是会调用几次 let location = locations[0] //这个就是我们当前所在的位置 类型为:CLLocation ,里面包含了经度和纬度 }
如果要达到微信那种预览位置效果的话,我们需要通过位置获取一张截图, 因为我们不可能放一个 mapView 到消息列表上,这样内存肯定受不了。
所以我们使用 MKMapSnapshotter, 这个类可以获取地图上的一小块截图,代码如下
let mapShoot = MKMapSnapshotter(options: options) mapShoot.start { (mapshoot, error) in let image = mapshoot!.image // 这就是我们需要的位置截图 let finalImageRect = CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height) // 如果想在地图上加入一个大头针,可以直接绘制上去,就像下面一样 let pin = MKPinAnnotationView() let pinImage = pin.image UIGraphicsBeginImageContextWithOptions(image.size, true, image.scale) image.draw(at: CGPoint(x: 0, y: 0)) pinImage?.draw(at: CGPoint(x: finalImageRect.size.width/2, y: finalImageRect.size.height/2)) let finalImage = UIGraphicsGetImageFromCurrentImageContext() self.locationDelegate.locationImageCallBack(location: location,image: finalImage) }
之后的就只需要处理发送位置和接收位置消息了。 如果想看源码可以点击传送门 源码 在 dev 分支
相关文章推荐
- iOS 发送位置消息
- iOS 发送位置消息
- Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九)
- iPhone消息推送机制(Push)实现及通过.net应用程序发送消息给ios应用程序
- ios 调用短信接口发送指定内容的消息
- Android笔记之高德地图定位(通过开启服务发送广播用handle消息机制更新位置信息)
- IOS 后台定位并向服务器发送当前位置
- 向一个指定窗口发送左键按下的消息,同时将左键按下的位置也发过去(譬如要编写连连看程序的外挂)
- Java发送ios推送消息(APN)的代码示例
- IOS高级界面发送消息与Unity3D消息的接收
- mfc窗口位置设置,隐藏功能,给其他程序发送虚拟鼠标键盘消息
- 16发送位置的消息类型布局
- iPhone消息推送机制(Push)实现及通过.net应用程序发送消息给ios应用程序
- Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收
- iPhone消息推送机制(Push)实现及通过.net应用程序发送消息给ios应用程序
- ios 调用短信接口发送指定内容的消息
- Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(转)
- ios 发送http协议请求消息
- iOS两个线程间嵌套发送同步消息
- iOS不使用第三方平台,发送推送消息