2017-02-23 7 views
1

MacOS 용 ArcGIS SDK를 사용하여 Swift로 작성한 프로그램에 OpenStreetMap을로드하려고합니다. 로드 된지도 (theMap.map = AGSMap(basemap: AGSBasemap.imagery())) 작동하지만 해당 URL에서 OpenStreetMap로드 할 수 없습니다. 내가는 ArcGIS 예에서 가져온 URL로드하려면 다음 코드를 사용하고 https://www.arcgis.com/home/item.html?id=b834a68d7a484c5fb473d4ba90d35e71예제와 동일한 형식의 URL (ArcGIS macOS SDK)을 사용하고 있음에도 불구하고 URL로드가로드되지 않습니다.

:

내가 사용하고있는 URL입니다

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 예제 (https://www.arcgis.com/home/item.html?id=4e1133c28ac04cca97693cf336cd49ad)에서 찾은 URL로 바꾸면 그 맵은 문제없이로드됩니다. 두 URL은 정확히 동일한 형식이지만 하나만 작동합니다. 이것이 왜 그리고 어떻게하면 OpenStreetMap URL을로드 할 수 있습니까? 감사.

답변

0

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() 
} 
0

설명에 따르면 첫 번째 URL은 타일링 된지도 서비스이고 두 번째 URL은 벡터입니다. 아마 레이어를 AGSArcGISTiledLayer로 선언해야합니다.