Snažím sa zmeniť farbu jednej sady kolíkovdo modra a ďalšia sada kolíkov zostane červená. Nasledoval som otázku, ktorá ma vedie k bodu, v ktorom kolíky menia farbu. Ale aj moje súčasné umiestnenie sa zmení na špendlík. Kolíky sa tiež menia z nového loga na staré logo (v skutočnosti obrázok špendlíka). Existuje spôsob, ako by kolíky mohli zostať ako nové logo / obrázok a tiež by sa moja aktuálna poloha mala zobrazovať normálne, t. J. Modrá pulzujúca bodka. ako aj zmenu jednej sady kolíkov na modrú, zatiaľ čo ostatné zostanú červené?
Prosím pomôžte! Nižšie je môj kód:
class MyPointAnnotation : MKPointAnnotation {
var pinTintColor: UIColor?
}
class ViewController: UIViewController, MKMapViewDelegate {
@IBOutlet var map: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
map.delegate = self
let anx = MyPointAnnotation()
anx.coordinate = CLLocationCoordinate2D(latitude: -36.56795, longitude: 176.56432)
anx.pinTintColor = .red
let any = MyPointAnnotation()
any.coordinate = CLLocationCoordinate2D(latitude: -36.54322, longitude: 176.43221)
any.pinTintColor = .blue
map.addAnnotation(anx)
map.addAnnotation(any)
}
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "myAnnotation") as? MKPinAnnotationView
if annotationView == nil {
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "myAnnotation")
} else {
annotationView?.annotation = annotation
}
if let annotation = annotation as? MyPointAnnotation {
annotationView?.pinTintColor = annotation.pinTintColor
}
return annotationView
}
}
odpovede:
0 pre odpoveď č. 1Ale aj moje súčasné umiestnenie sa zmení na špendlík.
Pridajte nasledujúci kód do mapView:viewFor...
metóda:
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if annotation is MKUserLocation {
return nil
}