2015-09-15 3 views
0

В настоящее время я использую обратное геокодирование, чтобы просто преобразовать долготу и широту в местность и субрегион.Возможно ли иметь обычное обратное геокодирование?

Возможно ли это переопределить это и по существу заставить его возвращать пользовательские строки по своему усмотрению, учитывая, что я предоставляю ему координаты? Есть предположения?

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { 


    locationManager.stopUpdatingLocation() 

    if(locations.count > 0){ 


     let location = locations[0] as! CLLocation 

     //   println(location.coordinate) 


     if let currentLocatino = currLocation { 
      if CLLocation(latitude: currentLocatino.latitude, longitude: currentLocatino.longitude).distanceFromLocation(location) > 500 { 
       currLocation = location.coordinate 
       self.skip = 0 
       self.loadObjects() 

      } 
     } 
     else { 
      currLocation = location.coordinate 
      self.skip = 0 
      self.loadObjects() 
     } 


     CLGeocoder().reverseGeocodeLocation(CLLocation(latitude: currLocation!.latitude, longitude: currLocation!.longitude), completionHandler: {(placemarks, error) -> Void in 


      if error != nil { 
       println("Reverse geocoder failed with error" + error.localizedDescription) 
       return 
      } 

      if placemarks.count > 0 { 
       let date = NSDate() 
       let formatter = NSDateFormatter() 
       formatter.dateStyle = .MediumStyle 
       formatter.stringFromDate(date) 
       let pm = placemarks[0] as! CLPlacemark 


       var testifempty = "\(pm.subLocality)" 
       if testifempty == "nil" 
       { 
        self.locationManager.startUpdatingLocation() 
        if let lbutton = self.lbutton{ 
         lbutton.text = "Hello " + "\(pm.locality)" //+ "\n" + formatter.stringFromDate(date) 


        } 

       } 
       else 
       { 
        self.locationManager.startUpdatingLocation() 
        if let lbutton = self.lbutton { 
         lbutton.text = "Hello " + "\(pm.subLocality)\n" // + formatter.stringFromDate(date) 
        } 

       } 
      } 

      else { 
       println("Problem with the data received from geocoder") 
      } 
     }) 

    } else { 


     println("Cannot fetch your location") 

    } 

} 
+0

Вы используете «CoreLocation», API карт Google или что-то еще? Не могли бы вы показать мне немного больше подробностей о том, над чем вы работаете, и что бы вы хотели? Предоставление кода было бы лучшим. – Ducky

+0

@ Ducky добавил в мой код обратное геокодирование. Simply-ish put, я хотел бы иметь возможность вводить координаты вручную и переопределять обратное геокодирование с помощью собственной строки. –

ответ

0

Если вы знаете, что такое имена, вы можете попробовать переключатель, который заменил соответствующие строки.

var locale_string 

switch locale_string { 
case “name1”: 
let displayed_locale_name = “changed_name1” 
case “name2”: 
let displayed_locale_name = “changed_name2” 

... 
} 

Тогда случай по умолчанию, в котором вы не идентифицировали локаль, может принимать строку как есть. Я получил идею из руководства по языку программирования Swift2, стр. 17.

0

Обратное геокодирование - это в основном пространственный запрос. Я бы предложил определить карту с пространственными границами, присвоить каждой границе атрибут как для локальности, так и для подлодки.

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

+0

Можете ли вы пойти немного глубже? –