2017-12-16 27 views
0

私は場所を検索してそこにピンをドロップする簡単なアプリケーションを作成しています。しかし、私は別のものを試して追加しようとするとこのピンを残す方法を理解できません。ここに私のコードだ:(Swift 3)MapViewに複数のピンを追加する方法

class MyMapViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate, UISearchBarDelegate{ 

var isMapToBeUpdated = true 
var numOfTrackedLocations = 0 
let locationManager = CLLocationManager.self 
let annotation = MKPointAnnotation() 
var annotationTitle = "" 
let appDelegate = UIApplication.shared.delegate as! AppDelegate 
var longArr: [Double] = [] 
var latArr: [Double] = [] 
var cityArr: [String] = [""] 
var count: Int = 0 

//sets variables and links this file to the app delegate// 
@IBOutlet weak var myMapView: MKMapView! 

@IBAction func seachButton (_sender: Any){ 
    let searchController = (UISearchController(searchResultsController: nil)) 
    searchController.searchBar.delegate = self 
    present(searchController, animated: true, completion: nil) 
} 
//links the search button to the search method// 

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
    UIApplication.shared.beginIgnoringInteractionEvents() 
    let activityIndicator = UIActivityIndicatorView() 
    activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray 
    activityIndicator.center = self.view.center 
    activityIndicator.hidesWhenStopped = true 
    activityIndicator.startAnimating() 
    //the above adds a search bar function, and sets the loading animation// 
    self.view.addSubview(activityIndicator) 

    searchBar.resignFirstResponder() 
    dismiss(animated: true, completion: nil) 

    let searchRequest = MKLocalSearchRequest() 
    searchRequest.naturalLanguageQuery = searchBar.text 

    let activeSearch = MKLocalSearch(request: searchRequest) 

    activeSearch.start { (response, error) in 
     //starts a search session// 
     activityIndicator.stopAnimating() 
     UIApplication.shared.endIgnoringInteractionEvents() 

     if response == nil 
     { 
      print ("ERROR") 
     } 
     else 
     { 
      var annotation = self.myMapView.annotations 

      let latitude = response?.boundingRegion.center.latitude 
      let longitude = response?.boundingRegion.center.longitude 

      self.annotation.title = searchBar.text 
      self.annotation.coordinate = CLLocationCoordinate2DMake(latitude!, longitude!) 
      self.myMapView.addAnnotation(self.annotation) 

      let coordinate: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude!, longitude!) 
      let span = MKCoordinateSpanMake(0.1, 0.1) 
      let region = MKCoordinateRegionMake(coordinate, span) 
      self.myMapView.setRegion(region, animated: true) 

これは、ごく一部である、あなたはもう見たい場合、私はそれを投稿することができますが、それは、注釈とは関係ありません。誰もがこれで私を助けることができれば大いに感謝するだろう。

+0

手順を省略しています。 longArr、latArr、cityArrとは何ですか? –

+0

Array私は後でコアデータを使用していますが、これは関係ありません。 – Mot

+0

そのためにenumerationまたはforループを使用できます。 –

答えて

0

マップビューには複数のピンを表示する機能があります。

map.showAnnotations([arrAnnotation], animated: true) 

ここで、arrAnotationはMKAnnotationのarrです。

関連する問題