【发布时间】:2018-10-15 11:40:26
【问题描述】:
我需要在地图上绘制 100 个图钉,最多 4 种不同颜色,以注意由我的“colorOfPin”(绿色、黄色、红色和蓝色)创建的变量。
通过一个函数,我循环生成100棵松树的100个注解:
func paintPinsIP () {
for item in 0 ... (numberPoints - 1) {
let annotationPin = LocationPoint ()
annotationPin.namePoint= elements [item].namePoint
annotationPin.coordinate = elements [item].coordinate
identificaPin = annotationPin.namePoint
viewOfMap.addAnnotation(annotationPin)
}
}
接下来我在地图上显示这 100 个注释,但每个图钉必须具有由变量“colorOfPin”指示的颜色(绿色、黄色、红色或蓝色):
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if (annotation is MKUserLocation) {return nil}
let pinIdentifier = identificaPin
var aView = mapView.dequeueReusableAnnotationView(withIdentifier: pinIdentifier)
if aView == nil {
let pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: pinIdentifier)
guard annotation is LocationPoint else {return nil}
pinView.isEnabled = true
pinView.canShowCallout = false
aView = pinView
switch colorOfPin {
case .red: pinView.pinTintColor = UIColor.red
case .yellow: pinView.pinTintColor = UIColor.yellow
case .green: pinView.pinTintColor = UIColor.green
case .blue: pinView.pinTintColor = UIColor.blue
}
} else {
aView?.annotation = annotation
}
return aView
}
但是 100 个点以最后一个图钉的颜色出现在地图上。所有点的颜色都是引脚#99的颜色。由于点#99的‘colorOfPin’变量是‘蓝色’,所以这100个引脚显示为蓝色。
如何为每个引脚绘制由变量“colorOfPin”指示的颜色?
【问题讨论】:
-
colorOfPin的值在哪里设置? -
当出队的注解视图不为零时会发生什么?在那种情况下颜色是如何设置的?