Ich schreibe eine einfache App, mit der Sie nach einem Ort suchen und dort einen Pin ablegen können. Allerdings kann ich nicht herausfinden, wie ich diese Pin zum Bleiben bekomme, wenn ich versuche, eine weitere hinzuzufügen. Hier ist mein Code:(Swift 3) So fügen Sie einem MapView mehrere Pins hinzu
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)
Dies ist nur ein kleiner Teil, wenn Sie mehr sehen will ich es schreiben kann, aber es nicht auf die Anmerkungen beziehen. Wenn mir jemand dabei helfen kann, wäre das sehr zu begrüßen.
Sie überspringen Schritte. Was sind longArr, latArr, cityArr für? –
Arrays, die ich später für Kerndaten verwende, spielen für sie keine Rolle. – Mot
Sie können dafür Aufzählung oder for-Schleife verwenden. –