Aka*_*eji 2 mkmapview ios swift3
我想从我自己的位置到预定义的位置获取路线.我可以通过在浏览器中打开它来完成它,但它只需要在应用程序中完成.有没有办法绘制路线并将其更新为当前位置的变化?
我正在使用以下代码在浏览器中打开.我希望它只保留在应用程序中
let url = URL(string: "http://maps.apple.com/?saddr=\(lat),\(long)&daddr=\(latgest),\(longgest)&dirflg=d")!
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
else
{
UIApplication.shared.openURL(url)
}
Run Code Online (Sandbox Code Playgroud)
假设你所在的地方是"来源",你想去你的"目的地".试试这个:
import MapKit
import UIKit
class ViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var mapview: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapview.delegate = self
let request = MKDirectionsRequest()
request.source = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: 40.203314, longitude: -8.410257), addressDictionary: nil))
request.destination = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: 40.112808, longitude: -8.498689), addressDictionary: nil))
request.requestsAlternateRoutes = false
request.transportType = .walking
let directions = MKDirections(request: request)
directions.calculate { [unowned self] response, error in
guard let unwrappedResponse = response else { return }
for route in unwrappedResponse.routes {
self.mapview.add(route.polyline)
self.mapview.setVisibleMapRect(route.polyline.boundingMapRect, animated: true)
}
}
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
let polylineRenderer = MKPolylineRenderer(overlay: overlay)
polylineRenderer.strokeColor = UIColor.blue
polylineRenderer.fillColor = UIColor.red
polylineRenderer.lineWidth = 2
return polylineRenderer
}
}
Run Code Online (Sandbox Code Playgroud)
不要忘记在mapview上插座.这对我有用.如果它对您有用,请告诉我们.
| 归档时间: |
|
| 查看次数: |
5973 次 |
| 最近记录: |