Swift 尽管使用示例中相同格式的URL(ArcGIS macOS SDK),但未加载来自URL的映射

Swift 尽管使用示例中相同格式的URL(ArcGIS macOS SDK),但未加载来自URL的映射,swift,arcgis,Swift,Arcgis,我正在尝试将OpenStreetMap加载到我用Swift编写的程序中,使用ArcGIS SDK for macOS。我可以加载内置地图(theMap.map=AGSMap(basemap:AGSBasemap.images())),但我似乎无法从其URL加载OpenStreetMap 这是我正在使用的URL: 我使用以下代码加载URL,这些代码取自ArcGIS示例: let openStreetMap = "https://www.arcgis.com/home/item.html?id=b8

我正在尝试将OpenStreetMap加载到我用Swift编写的程序中,使用ArcGIS SDK for macOS。我可以加载内置地图(
theMap.map=AGSMap(basemap:AGSBasemap.images())
),但我似乎无法从其URL加载OpenStreetMap

这是我正在使用的URL:

我使用以下代码加载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))

地图没有加载,我最后得到的只是一个灰色网格背景。令人惊讶的是,如果我将URL与我在ArcGIS示例()中找到的URL交换,则该映射加载时不会出现问题。这两个URL的格式完全相同,但只有一个有效。这是为什么?我如何让它加载OpenStreetMapURL?谢谢。

除非您需要使用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()
}

除非您需要使用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是平铺地图服务,而第二个URL是向量。
也许您应该将该层声明为agsargistiledlayer

根据其描述,第一个URL是平铺地图服务,而第二个URL是向量。 也许您应该将该层声明为agsargistiledlayer