2014-12-07 10 views
15

Jestem nowy w szybkim języku i jeszcze nie zrobiłem aplikacji z mapkitem. Ale mam ustawioną mapę i regiony, ale jestem zawieszony, w jaki sposób zezwolić użytkownikom na dodawanie szpilek. Pozwól mi wyjaśnić, nie mam pojęcia, nawet od czego zacząć, wszystko, co mam w tej chwili (dla szpilek) jest moją zmienną, ale nie jestem nawet pewien, czy to prawda. Każda pomoc będzie bardzo ceniona !! Co mam ...Jak dodawać Piny (adnotacje) za pomocą Xcode 6 (Swift)

var MyPins: MKPinAnnotatoinView!

......

override func viewDidLoad() { 
    super.viewDidLoad() 

kod MapView

..... ..... }

Odpowiedz

0

Musisz wywołać metodę, kiedy i gdzie użytkownik musi dodać pinezkę. Jeśli chcesz dodać pinezkę, w której użytkownik dotknie i przytrzyma mapę, musisz zadzwonić do gestRecognizer, ale jeśli chcesz to zrobić za pomocą przycisku, po prostu zadzwoń do niego w akcji. Tak czy inaczej, dokumentacja dodawania pinów jest omawiana w całości pod numerem Here

38

Twoja zmienna szpilki jest poprawna. Teraz wystarczy dodać tę adnotację do MKMapView.

Można również utworzyć niestandardową klasę dla MKAnnotation, aby dodać niestandardową adnotację do widoku mapy.

beta demo MapExampleiOS8 => Które obsługuje Swift 2,1

Postępuj zgodnie z poniższymi wskazówkami:

1. Dodaj MapKit.framework do projektu.

enter image description here

2. Tworzenie Storyboard zmienna IBOutlet z widoku mapy sterowania lub utworzyć go w widoku kontrolera. Ustaw delegat dla tej zmiennej, aby zastąpić go za metody Delegat:

Dodaj podpis delegata, aby wyświetlić interfejs kontrolera:

class ViewController: UIViewController, MKMapViewDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Set map view delegate with controller 
     self.mapView.delegate = self 
    } 
} 

3. Zastąp swoje metody Delegat:

Tutaj musimy nadpisać mapView(_:viewForAnnotation:) Metoda wyświetlania pinów adnotacji na mapie.

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { 
    if (annotation is MKUserLocation) { 
     return nil 
    } 

    if (annotation.isKind(of: CustomAnnotation.self)) { 
     let customAnnotation = annotation as? CustomAnnotation 
     mapView.translatesAutoresizingMaskIntoConstraints = false 
     var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "CustomAnnotation") as MKAnnotationView! 

     if (annotationView == nil) { 
      annotationView = customAnnotation?.annotationView() 
     } else { 
      annotationView?.annotation = annotation; 
     } 

     self.addBounceAnimationToView(annotationView) 
     return annotationView 
    } else { 
     return nil 
    } 
} 

4. Dodaj MKPointAnnotation do widoku mapy.

Możesz dodać pinezkę do lokalizacji w widoku mapy. Dla uproszczenia dodaj kod do metody viewDidLoad().

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Set map view delegate with controller 
    self.mapView.delegate = self 

    let newYorkLocation = CLLocationCoordinate2DMake(40.730872, -74.003066) 
    // Drop a pin 
    let dropPin = MKPointAnnotation() 
    dropPin.coordinate = newYorkLocation 
    dropPin.title = "New York City" 
    mapView.addAnnotation(dropPin) 
} 
+1

Tak, to działa! Prosty i krótki sposób. – Mehmet