尽管使用了示例(Arcgis MacOS SDK)的相同格式URL,但URL的地图未加载



我正在尝试将OpenStreetMap加载到我在Swift中使用ArcGIS SDK进行MACOS的程序。我的内置地图(theMap.map = AGSMap(basemap: AGSBasemap.imagery()))的加载正常,但似乎无法从其URL加载OpenStreetMap。

这是我正在使用的URL:https://www.arcgis.com/home/item.html?id=b834a68d7a484c5fb473d4ba90d35e71

我正在使用以下代码加载URL,从ArcGIS示例中获取:

let openStreetMap = "https://www.arcgis.com/home/item.html?id=b834a68d7a484c5fb473d4ba90d35e71"
let tiles = AGSArcGISVectorTiledLayer(url: URL(string: openStreetMap)!)
theMap.map = AGSMap(basemap: AGSBasemap(baseLayer: tiles))

该地图没有加载,我最终要得到的只是灰色网格背景。令人惊讶的是,如果我用在ArcGIS示例中发现的URL(https://www.arcgis.com/home/home/item.html?id=4e1133c28ac04cca97693cf336cd49ad),那映射了没有问题。这两个URL的格式完全相同,但只有一个作品。为什么要加载OpenStreetMap URL?谢谢。

除非您需要使用ArcGIS SDK,否则这是使用MAPKIT的替代方法。

override func viewDidLoad() {
    super.viewDidLoad()
    let osm = MKTileOverlay(urlTemplate: "https://a.tile.openstreetmap.org/{z}/{x}/{y}.png")
    self.map.add(osm)
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    if let tile = overlay as? MKTileOverlay {
        let renderer = MKTileOverlayRenderer(tileOverlay: tile)
        return renderer
    }
    return MKOverlayRenderer()
}

根据其描述,第一个URL是瓷砖mapservice,而第二个URL是向量。也许您应该将该层声明为Agsarcgistiledlayer

最新更新