【发布时间】:2020-04-10 19:54:36
【问题描述】:
我通过继承MKTileOverlay 并使用MKTileOverlayRenderer 呈现它,在MKMapView 中实现了Web 地图服务。它工作正常并正确显示自定义地图。
当我调用像mapView.addOverlay(polyLine) 这样的方法来添加折线或多边形时。 WMS 覆盖被苹果地图过度取代。
// Set up the overlay and adds it to MKMapView.
func setupTileRenderer() {
let wmsURL = formTemplate?.wmsURL
let overlay = WMSTileOverlay(urlTemplate: wmsURL)
overlay.canReplaceMapContent = true
mapView.addOverlay(overlay, level: .aboveLabels)
tileRenderer = MKTileOverlayRenderer(tileOverlay: overlay)
wmsTileOverlay = overlay
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if overlay is MKPolyline {
let render = MKPolylineRenderer(overlay: overlay)
render.lineWidth = 2
render.strokeColor = UIColor.red
return render
} else if overlay is MKPolygon {
let render = MKPolygonRenderer(overlay: overlay)
render.lineWidth = 2
render.strokeColor = UIColor.red
return render
} else if overlay is WMSTileOverlay {
return tileRenderer!
}
return MKOverlayRenderer(overlay: overlay)
}
如何防止这种情况发生?我不希望 wmsTileOverlay 在添加折线或多边形时被替换。
【问题讨论】:
标签: swift mapkit mkmapview wms mktileoverlay