Kok*_*nee 14 mapkit mkmapview mkannotationview ios swift
我有一个工作循环来为一些工作数据点的标题和副标题元素设置注释.我想在同一个循环结构中做的是将引脚颜色设置为紫色而不是默认值.我无法弄清楚我需要做些什么来点击我的theMapView来相应地设置引脚.
我的工作循环和一些尝试......
....
for var index = 0; index < MySupplierData.count; ++index {
// Establish an Annotation
myAnnotation = MKPointAnnotation();
... establish the coordinate,title, subtitle properties - this all works
self.theMapView.addAnnotation(myAnnotation) // this works great.
// In thinking about PinView and how to set it up I have this...
myPinView = MKPinAnnotationView();
myPinView.animatesDrop = true;
myPinView.pinColor = MKPinAnnotationColor.Purple;
// Now how do I get this view to be used for this particular Annotation in theMapView that I am iterating through??? Somehow I need to marry them or know how to replace these attributes directly without the above code for each data point added to the view
// It would be nice to have some kind of addPinView.
}
Run Code Online (Sandbox Code Playgroud)
小智 37
您需要实现viewForAnnotation委托方法并MKAnnotationView从那里返回(或子类).
这与Objective-C类似 - 底层SDK的工作方式相同.
MKPinAnnotationView从for添加注释的循环中删除创建,并改为实现委托方法.
以下是viewForAnnotationSwift中委托方法的示例实现:
func mapView(mapView: MKMapView!,
viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
if annotation is MKUserLocation {
//return nil so map view draws "blue dot" for standard user location
return nil
}
let reuseId = "pin"
var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
if pinView == nil {
pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
pinView!.canShowCallout = true
pinView!.animatesDrop = true
pinView!.pinColor = .Purple
}
else {
pinView!.annotation = annotation
}
return pinView
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16104 次 |
| 最近记录: |