2015-05-20 5 views
0

У меня есть приложение с картой, где вы можете сделать аннотацию, сбросив булавку. Как сохранить аннотацию, чтобы вы могли видеть ее, когда приложение закрыто и повторно открывается?Показаны булавки после перезапуска приложения?

Мой код для аннотирования

func addAnnotation(gesture: UIGestureRecognizer) { 

    if gesture.state == UIGestureRecognizerState.Began { 

     var touch = gesture.locationInView(self.Mapa) 
     var coordinate = Mapa.convertPoint(touch, toCoordinateFromView: self.Mapa) 

     var location = CLLocationCoordinate2D(latitude: coordinate.latitude, longitude: coordinate.longitude) 

     var loc = CLLocation(latitude: coordinate.latitude, longitude: coordinate.longitude) 

     CLGeocoder().reverseGeocodeLocation(loc, completionHandler: { (placemarks, error) -> Void in 

      if error == nil { 
       let placemark = CLPlacemark(placemark: placemarks[0] as! CLPlacemark) 

       self.cislo = placemark.subThoroughfare != nil ? placemark.subThoroughfare : "" 
       self.adresa = placemark.thoroughfare != nil ? placemark.thoroughfare : "" 
       self.mesto = placemark.subAdministrativeArea != nil ? placemark.subAdministrativeArea : "" 
       self.krajina = placemark.administrativeArea != nil ? placemark.administrativeArea : "" 
       let annotation = MKPointAnnotation() 
       annotation.coordinate = placemark.location.coordinate 
       annotation.title = self.adresa! + " " + self.cislo! 
       self.Mapa.addAnnotation(annotation) 
       println("Špendlík pridaný!") 


      } 

     }) 

    } 

} 

В случае, если вы хотите увидеть весь код http://pastebin.com/d89kTrL7

+0

происходит из фонового режима и возвращается или возврата после прекращения применения? –

+0

, возвращающий после завершения приложения – patrikbelis

+0

, вы можете использовать NSUserDefaults для сохранения долготы и широты, а затем восстановить его форму NSUserDefauls, а затем снова показать аннотацию вывода, используя информацию от userdefaults. –

ответ

1

я бы сохранить данные в userdefaults в

func addAnnotation(gesture: UIGestureRecognizer) { 
     if gesture.state == UIGestureRecognizerState.Began { 
     var touch = gesture.locationInView(self.Mapa) 
     var coordinate = Mapa.convertPoint(touch, toCoordinateFromView: self.Mapa) 

     let defaults = NSUserDefaults.standardUserDefaults() 
     defaults.setDouble(coordinate.longitude, forKey: "longitudeNameKey") 
     defaults.setDouble(coordinate.latitude, forKey: "latitudeNameKey") 
     defaults.synchronize() 

     var location = CLLocationCoordinate2D(latitude: coordinate.latitude, longitude: coordinate.longitude) 
     var loc = CLLocation(latitude: coordinate.latitude, longitude: coordinate.longitude) 

     CLGeocoder().reverseGeocodeLocation(loc, completionHandler: { (placemarks, error) -> Void in 

      if error == nil { 
       let placemark = CLPlacemark(placemark: placemarks[0] as! CLPlacemark) 

       self.cislo = placemark.subThoroughfare != nil ? placemark.subThoroughfare : "" 
       self.adresa = placemark.thoroughfare != nil ? placemark.thoroughfare : "" 
       self.mesto = placemark.subAdministrativeArea != nil ? placemark.subAdministrativeArea : "" 
       self.krajina = placemark.administrativeArea != nil ? placemark.administrativeArea : "" 
       let annotation = MKPointAnnotation() 
       annotation.coordinate = placemark.location.coordinate 
       annotation.title = self.adresa! + " " + self.cislo! 
       self.Mapa.addAnnotation(annotation) 
       println("Špendlík pridaný!") 


      } 

     }) 

    } 

} 

Вы можете сохранить информацию в NSUserDefaults когда создаются аннотации. И где-то в методе viewDidLoad вы просто получаете всю информацию от пользовательских значений по умолчанию, а затем вытесняете аннотации.

override func viewDidLoad() { 
     super.viewDidLoad() 

     loadAnnotationFromUserDefaults() 

    } 

использование loadAnnotationFromUserDefaults метод десериализует список координат ранее сохраненного в NSUserDefaults. С помощью этого метода вы также загружаете координаты в виде аннотаций на карте.

func loadAnnotationFromUserDefaults(){ 
     let defaults = NSUserDefaults.standardUserDefaults() 
     let long= defaults.doubleForKey("longitudeNameKey") 
     let lat = defaults.doubleForKey("latitudeNameKey") 
     println("\(long)") 
     println("\(lat)") 
     //You got the coordinates that you lost after terminating now load the coordinates as annotation to mapview 
    } 

Вы должны установить новые координаты и прекратить применение ..notice в coordinates..now снова возобновлять приложение ..now вы получите снова те увидеть на бревне

код PS не тестируются и должны меняться в зависимости к вашей архитектуре приложений ... возьмите ее только как ссылку.

Вот демонстрационный проект я создан для вас https://drive.google.com/open?id=0B6dTvD1JbkgBRnN2QllWWlJqd0E&authuser=0

+0

Okey. Я в чате. – patrikbelis

+0

yeah..theres, где вы должны поместить свой ум. Каждый раз он добавляет новый экземпляр массива. Вам нужно добавить новую аннотацию в том же массиве. Можете получить массив от значений по умолчанию пользователя и добавление там ... попробуйте сделать это самостоятельно? –

Смежные вопросы