swift使用谷歌地图实现定位

来源:互联网 发布:js判断质数的算法 编辑:程序博客网 时间:2024/06/06 07:34

swift使用谷歌地图实现定位


  • 在国内app中虽然使用Google map的比较少,但在一些应用中需要获取国外的地址之类的往往就需要使用到
    谷歌地图,例如携程旅行中就有用到。下面主要是介绍使用谷歌地图定位的用法,具体的方法可以参考这里
    下面的方法也是参考这篇文章来写的,只是就里面的一些代码的swift版本的原因做的一些就自己的swift版本

的修改,下面使用的是swift2.3

首先要实现定位的功能之前要先定义如下属性:

var mapView : GMSMapView!var locationManager = CLLocationManager()var didFindMyLocation = false  //只是用来做一个标记

然后再ViewDidLoad()中:

mapView = GMSMapView()  //初始化地图,注意这一步非常的重要locationManager.desiredAccuracy = KCLLocationAccuracyHundredMeters  //定位精度locationManager.destanceFilter = 50  //指定最小距离更新locationManager.delegate = self  //遵循CLLocationManagerDelegate代理locationManager.requestWhenInUseAutherization()//设置监听来监听位置的变化mapView.addObserver(self, forKeyPath:"myLocation", options:NSKeyValueObservingOptions.New, context:nil)

代理方法

//谷歌地图开始定位func locationManager(manager:CLLocationManager!, didChangeAutherizationStatus status:CLAuthorizationStatus){    if status == CLAuthorizationStatus.AuthorizaedWhenInUse{        self.mapView.myLocationEnabled = true  //开始定位    }}//监听处理位置坐标更新Override func observerValueForKeyPath(keyPath:String?, ofObject object:AnyObject?,change:[String:AnyObject]?, Context:UnSafeMutablePointer<Void>){    if !didFindMyLocation{        let myLocation:CLLocation = Change![NSKeyValueChangeNewKey] as! CLLocation        self.mapView.camera = GMSCameraPosition.cameraWithTarget(myLocation.coordinate, zoom:10.0)        self.mapView.settings.myLocationButton = true        didFindMyLocation = true        print("latitude-->\(myLocation.coordinate.latitude) longitude-->\(myLocation.coordinate.longitude)")    }    self.mapView.removeObserver(self, forKeyPath:"myLocation") //最后要记住一定要移除观察者,不然当程序返回上一个页面时会闪退}
1 0
原创粉丝点击