我正在尝试制作导航应用
但是当我尝试导航并显示"MKRoutePolyline"时,此应用程序崩溃
interiorPolygons:无法识别的选择器发送到实例0x14ed4b4d0"
我的代码有什么问题?
import UIKit
import MapKit
class MapViewController: UIViewController, MKMapViewDelegate {
var farm:Farm!
var currentPlacemark:CLPlacemark?
let locationManager = CLLocationManager()
var currentTransportType = MKDirectionsTransportType.Automobile
var currentRoute:MKRoute?
@IBOutlet var mapView:MKMapView!
@IBAction func showDirection(sender: AnyObject){
let directionRequest = MKDirectionsRequest()
directionRequest.source = MKMapItem.mapItemForCurrentLocation()
let destinationPlacemark = MKPlacemark(placemark: currentPlacemark!)
directionRequest.destination = MKMapItem(placemark: destinationPlacemark)
directionRequest.transportType = currentTransportType
let directions = MKDirections(request: directionRequest)
directions.calculateDirectionsWithCompletionHandler { (routeResponse, routeError) -> Void in
guard let routeResponse = routeResponse else {
if let routeError = routeError {
print("Error: \(routeError)")
}
return
}
let route = routeResponse.routes[0]
self.currentRoute = route
self.mapView.removeOverlays(self.mapView.overlays)
self.mapView.addOverlay(route.polyline, level: MKOverlayLevel.AboveRoads)
}
}
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
let renderer = MKPolygonRenderer(overlay: overlay)
renderer.strokeColor = UIColor.yellowColor()
renderer.lineWidth = 3.0
return renderer
}
Run Code Online (Sandbox Code Playgroud)
小智 13
看来你想渲染一条线.
但多边形是一个形状,
所以你的代码应该是:
let renderer = MKPolylineRenderer(overlay: overlay)
Run Code Online (Sandbox Code Playgroud)
但不是:
let renderer = MKPolygonRenderer(overlay: overlay)
Run Code Online (Sandbox Code Playgroud)
在
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
953 次 |
| 最近记录: |