Menggambar arah rute dari 2 alamat string masukan pada MapView di Swift

Saat ini saya sedang melakukan tugas seperti di bawah ini:

  • Buat ViewController berisi MapView dan UIView (berisi 2 textfields yang alamatnya akan dimasukkan pengguna).
  • Menggambar rute arah dari 2 alamat (diinput oleh textfield di atas) pada Tampilan Peta.

Saya menemukan beberapa tutorial yang menunjukkan cara melakukannya dengan perutean, namun sebagian besar dengan menggambar dari lokasi saat ini ke beberapa tujuan.
Konsep saya adalah mendapatkan teks dari textfield dan mengubahnya menjadi koordinat dan melakukan beberapa teknik delegasi.

Adakah yang bisa membimbing saya tentang cara mengatasinya?


person Duy Khanh Nguyen    schedule 12.10.2016    source sumber
comment
apakah kamu menggunakan swift 2.0? atau gunakan Swift 3.0? dan sebutkan ini dalam pertanyaan Anda   -  person Himanshu Moradiya    schedule 12.10.2016
comment
raywenderlich.com/87008/overlay-views-mapkit-swift-tutorial ??   -  person Nhat Dinh    schedule 12.10.2016
comment
Coba kode saya, Anda akan mendapatkan garis lintang dan bujur dari lokasi yang ingin Anda lewati.   -  person Himanshu Moradiya    schedule 12.10.2016


Jawaban (2)


Anda harus menggunakan pengkodean geo-reverse dengan mengubah nama kota Anda menjadi koordinat.

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()
                }
            })

Demikian tutorial menggambar garis antar koordinat jalur. 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
        }
  }

Keluaran :

21.2173191

72.8664716

person Himanshu Moradiya    schedule 12.10.2016