如何使用MapKit在swift 3中更改引脚颜色

时间:2017-01-21 22:33:19

标签: ios swift annotations swift3 mapkit

下面是我的代码,其中列出了1个注释引脚。现在它的红色。我怎么能把它弄成蓝色?我需要输入扩展文件吗?该代码还包括当前用户的位置。我还可以将注释设为按钮吗?

import UIKit
import MapKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

@IBOutlet var map: MKMapView!

let manager = CLLocationManager()


func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let location = locations[0]
    let span: MKCoordinateSpan = MKCoordinateSpanMake(1.0, 1.0)
    let myLocation:CLLocationCoordinate2D = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
    let region:MKCoordinateRegion = MKCoordinateRegionMake(myLocation, span)

    map.setRegion(region, animated: true)

    print(location.altitude)
    print(location.speed)

    self.map.showsUserLocation = true

}




override func viewDidLoad() {
    super.viewDidLoad()

    manager.delegate = self
    manager.desiredAccuracy = kCLLocationAccuracyBest
    manager.requestWhenInUseAuthorization()
    manager.startUpdatingLocation()

    let location:CLLocationCoordinate2D = CLLocationCoordinate2DMake(37.5656, -122.443)
    let annoation = MKPointAnnotation()

           annoation.coordinate = location
    annoation.title = "MYSHOP"
    annoation.subtitle = "Come Visit"
    map.addAnnotation(annoation)

}


}

2 个答案:

答案 0 :(得分:2)

我看到这个问题已经存在了一段时间,但我记得我在创建自定义引脚颜色时遇到了麻烦,所以也许有人可以在将来使用它。 MKPinAnnotationColor已被弃用,因此如果您需要非红色,绿色或紫色的针脚,则需要创建自己的颜色。您可以通过创建MKPinAnnotationView的扩展并定义新颜色来实现。例如,如果你想要一个蓝色的针脚:

 extension MKPinAnnotationView {
     class func bluePinColor() -> UIColor {
         return UIColor.blue
     }
 }

然后将颜色分配给注释:

 MKPinAnnotationView.bluePinColor()

答案 1 :(得分:1)

您需要设置一些对象作为地图的委托,然后实现viewForAnnotation。您可以使用MKPinAnnotationView返回标准引脚注释,或创建自定义视图,如果需要特殊内容,则返回该视图。

应该有大量的教程展示如何做到这一点,因为它简单的地图定制。

谷歌的快速搜索显示了这篇SO帖子:

How to change MKAnnotation Color using Swift?

请注意,该问题的答案使用的是pinColor,在iOS 10中已弃用。您需要使用MKPinAnnotationColor代替。