Направление маршрута рисования из адреса 2 входных строк на MapView в Swift

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

  • Создайте ViewController, содержащий MapView и UIView (содержат 2 textfields, на которые пользователь будет вводить адрес).
  • Рисование маршрута направления по 2 адресам (введенным текстовыми полями выше) на карте.

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

Может ли кто-нибудь помочь мне в решении этой проблемы?


person Duy Khanh Nguyen    schedule 12.10.2016    source источник


Ответы (2)


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

geocoder.reverseGeocodeLocation(currentLocation, completionHandler: {
            placemarks, error in

                if error == nil && placemarks.count > 0 {
                    self.placeMark = placemarks.last as? CLPlacemark
                    self.adressLabel.text = "\(self.placeMark!.thoroughfare)\n\(self.placeMark!.postalCode) \(self.placeMark!.locality)\n\(self.placeMark!.country)"
                    self.manager.stopUpdatingLocation()
                }
            })

Это учебник по рисованию линии между координатами пути. https://github.com/varshylmobile/MapManager

person Praveen Saraswat    schedule 12.10.2016

let address : CLLocationCoordinate2D = self.getLocation(String(Anand Nagar, Rustambaug Road, Surat, India, 395006)) 
print(address.latitude)
print(address.longitude)

func getLocation(address: String) -> CLLocationCoordinate2D {

        var center : CLLocationCoordinate2D = CLLocationCoordinate2D()
        let esc_addr: String = address.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
        let req: String = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=\(esc_addr)"
        let responseData: NSData = NSData(contentsOfURL: NSURL(string: req)!)!
        var _: NSError
        var responseDictionary: [NSObject : AnyObject] = try! NSJSONSerialization.JSONObjectWithData(responseData, options: [] ) as! [NSObject : AnyObject]
        var results: [AnyObject] = (responseDictionary["results"] as! [AnyObject])
        if results.count > 0 {
            var firstItem: [NSObject : AnyObject] = (results[0] as! [NSObject : AnyObject])
            var geometry: [NSObject : AnyObject] = ((firstItem["geometry"] as! [NSObject : AnyObject]) )
            var location: [NSObject : AnyObject] = ((geometry["location"] as! [NSObject : AnyObject]) )
            print(location)
            let lat = location["lat"]
            let lng = location["lng"]
            center.latitude = lat as! CLLocationDegrees
            center.longitude = lng as! CLLocationDegrees
            print(center)
           return center
        }
        else {
            center.latitude = 0
            center.longitude = 0
            return center
        }
  }

Вывод:

21.2173191

72.8664716

person Himanshu Moradiya    schedule 12.10.2016