MapKit --- iOS中的地图框架

iOS中可以简单地使用MapKit框架来进行地图的相关开发工作.

基本步骤:

  1. import MapKit
  2. ViewController 继承 MKMapViewDelegate 协议
  3. 添加一个MapKit View
  4. 准备一个相应的region信息, 即以哪为中心, 方圆多少范围
  5. 在mapView中设置该region即可
  6. 添加地理位置的标注annotation
  7. 地理位置标注添加到map中的相应操作.

ViewController

import UIKit
import MapKit

class ViewController: UIViewController, MKMapViewDelegate {

    @IBOutlet weak var mapView: MKMapView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        mapView.delegate = self
        // MKMapView中有一个delegate属性, ViewController继承MKMapViewDelegate协议, 就必须实现该协议中的必需的方法

        let location = CLLocationCoordinate2D(latitude: 22.284681, longitude: 114.158177)
        let span = MKCoordinateSpanMake(0.05, 0.05)
        // region可以视为以location为中心, 方圆多少范围
        let region = MKCoordinateRegion(center: location, span: span)
        // mapView会显示该region的map
        // mapView.mapType = MKMapType.Standard
        mapView.setRegion(region, animated: true)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

ViewController如上所示, 只需准备好location, 然后只需mapView的setRegion操作即可呈现map.

地理位置标注annotation

在map中, 我们可以在指定的位置添加一个标注annotation.

        // 在地图上添加一个位置标注
        let annotation = MKPointAnnotation()
        annotation.coordinate = location
        annotation.title = "Hong Kong"
        annotation.subtitle = "Someplace"
        mapView.addAnnotation(annotation)

        // 在地图上添加另一个位置标注
        let location2 = CLLocationCoordinate2D(latitude: 22.294681, longitude: 114.170177)
        let annotation2: MKPointAnnotation = MKPointAnnotation()
        annotation2.coordinate = location2
        annotation2.title = "Hong Kong"
        annotation2.subtitle = "Someplace2"
        mapView.addAnnotation(annotation2)

效果如图所示:

annotation 1 annotation 2
技术分享 技术分享

annotation显示时的操作

有时候, 我们希望地图出现annotation时候执行一些操作, 如自动放到或缩小.

    // 呈现该annotation的时候, 调用该方法
    func mapView(mapView: MKMapView!, didAddAnnotationViews views: [AnyObject]!) {
        println("didAddAnnotationViews")
        let annotationView: MKAnnotationView = views[0] as! MKAnnotationView
        let annotation = annotationView.annotation
        let region: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(annotation.coordinate, 500, 500)
        self.mapView.centerCoordinate = region.center
        self.mapView.setRegion(region, animated: true)
        self.mapView.selectAnnotation(annotation, animated: true)
    }
}

如下图: 该annotation一旦在map中呈现, 则自动跳转到以该region的center为map中心, 指定范围的一片区域.
技术分享

除此之外, 下一篇准备学习高德地图的相关开发.

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。