Prevent replacing of WMS Overlay while adding Polygon or Polyline to MKMapView

风格不统一 提交于 2019-12-25 00:32:33

问题


I have implemented Web Map Service in the MKMapView by subclassing the MKTileOverlay & rendering it using MKTileOverlayRenderer. It works fine and displays the custom map properly.

When I call method like mapView.addOverlay(polyLine) to add Polyline or Polygon. The WMS overlay gets replaced with the Apple Maps overly.

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

How do I prevent this? I don't want wmsTileOverlay to get replaced while adding polyline or polygon.


回答1:


I realised that before drawing the polygon I was removing the previous overlays so at that time I was removing all the overlays. Just checking the overlay is WMSTileOverlay then not removing it.

/// Clears the overlays added by the user.
func clearOverlaysOnMapView() {
    for overlay in mapView.overlays {
        if !(overlay is WMSTileOverlay) {
            mapView.removeOverlay(overlay)
        }
    }
}


来源:https://stackoverflow.com/questions/59389033/prevent-replacing-of-wms-overlay-while-adding-polygon-or-polyline-to-mkmapview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!