Swift-MapView

作者: Coder东 | 来源:发表于2016-12-29 14:47 被阅读76次

    最近想搞搞Swift和OC的混编所以先从基础开始研究,大神如果有更好的意见请指教!

    之所以写这个是因为里面有闭包表达式,虽然离散数学中曾讲到闭包,但是还是感觉陌生,所以在使用MapView的时候,对于闭包的使用很尴尬,一知半解,在这里简单谈谈自己的见解,有错误的地方希望大神指正!!!

    //基础地图

    //        self.baseMapView()

    //自定义地理视图的地理坐标,为MKMapView指定地理坐标

    //        self.myMapView()

    //显示地点提示框

    self.annotationMapView()

    //显示地理位置的名称,地理反编码

    self.geocoderMap()

    let device  = UIDevice()

    print("divice的信息--%@--%@--%@--%@--%@",device.name,device.systemName,device.systemVersion,device.model,device.localizedModel)

    func geocoderMap()  {

    //初始化一个地理位置解析类,使用该类进行地理位置的反向解析

    let geocoder = CLGeocoder()

    //通过设定经纬度来创建一个位置

    let location = CLLocation(latitude:39.9,longitude:116.5)

    //使用地理位置解析对象,解析地理坐标

    //        类型别名就是给一个类型定义的一个小名。通过 typealias 关键字进行定义。

    //        public typealias CLGeocodeCompletionHandler = ([CLPlacemark]?, Error?) -> Swift.Void

    // reverse geocode requests

    //        open func reverseGeocodeLocation(_ location: CLLocation, completionHandler: @escaping CoreLocation.CLGeocodeCompletionHandler)

    //@escaping 叫做逃逸闭包 具体详见http://wiki.jikexueyuan.com/project/swift/chapter2/07_Closures.html#closure_expressions

    geocoder.reverseGeocodeLocation(location) { (placeMarks:[CLPlacemark]?, error:Error?) in

    //在闭包语句里,处理解析后的结果,当结果中的位置坐标数组,长度大于0时,执行下来的操作

    if(placeMarks?.count)! > 0{

    //获得位置标记数组的第一个元素

    let placeMark = placeMarks?.first

    print(placeMark?.addressDictionary ?? AnyObject.self)

    }

    }

    }

    func annotationMapView()  {

    let map = MKMapView(frame:self.view.bounds)

    map.showsUserLocation = true

    map.mapType = MKMapType.standard

    let coordinate2D = CLLocationCoordinate2D(latitude:39.915352,longitude:116.397105)

    let zoomLevel = 0.02//设置地图显示区域的缩放级别

    //初始化一个变量表示地图对象的显示区域

    let regin = MKCoordinateRegionMake(coordinate2D,MKCoordinateSpanMake(zoomLevel, zoomLevel))

    //设置对象的显示区域

    map.setRegion(regin, animated: true)

    self.view.addSubview(map)

    let objectAnnotation = MKPointAnnotation()

    //设置注释对象的地理位置

    objectAnnotation.coordinate = coordinate2D;

    //设置注释对象的标题

    objectAnnotation.title = "Imperial Palace"

    //设置注释对象的子标题

    objectAnnotation.subtitle = "China's biggest palace"

    //注释对象添加到地图中

    map.addAnnotation(objectAnnotation)

    }

    func myMapView() {

    let map = MKMapView(frame:self.view.bounds)

    map.showsUserLocation = true

    map.mapType = MKMapType.satellite

    let coordinate = CLLocationCoordinate2D(latitude:39.915352,longitude:116.397105)

    let zoomLevel = 0.02//设置地图显示区域的缩放级别

    //初始化一个变量表示地图对象的显示区域

    let regin = MKCoordinateRegionMake(coordinate,MKCoordinateSpanMake(zoomLevel, zoomLevel))

    //设置对象的显示区域

    map.setRegion(regin, animated: true)

    self.view.addSubview(map)

    }

    func baseMapView()  {

    let map = MKMapView(frame:self.view.bounds)

    map.showsUserLocation = true

    map.mapType = MKMapType.standard

    self.view.addSubview(map)

    }

    GitHub - SuiFengLiuNian/Swift-MapView: Swift-反地理编码

    相关文章

      网友评论

        本文标题:Swift-MapView

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