OL-Cesium - 来自 services.arcgisonline.com 的源地图

3
我有一个简单的2D地图,它是用Open Layer (5.2.0)从以下网址获取的:https://services.arcgisonline.com/arcgis/rest/services/NatGeo_World_Map/MapServer。当我切换到ol-cesium时,地图不再显示,我只能看到一个黑色圆圈(地球)。以下是代码:
使用OpenStreetMap时它工作正常,问题出现在尝试使用arcgisonline.com上的地图时。

<!doctype html>
<html lang="en">
<head>
<style>
.map {
 height: 400px;
 width: 400px;
}
</style>
<link type="text/css" rel="stylesheet" href="/csiaps/webjars/openlayers/5.2.0/ol.css" />
<link type="text/css" rel="stylesheet" href="/csiaps/js/olcesium/olcs.css" />
<script type="text/javascript" src="/csiaps/webjars/openlayers/5.2.0/ol.js"></script>
<script type="text/javascript" src="/csiaps/js/cesium/Build/CesiumUnminified/Cesium.js"></script>
<script type="text/javascript" src="/csiaps/js/olcesium/olcesium.js"></script>

<script>
 var ol3d = null;
 var baseLayerGroup;



 function createArcGISCacheLayer(name, url, layerInfoParam) {

  name = 'NatGeo_World_Map';
  url = 'https://services.arcgisonline.com/arcgis/rest/services/NatGeo_World_Map/MapServer';
  layerInfoParam = <NEVER MIND, not include for this post>;

  var wrapDateLineOption = true;

  var layer = new ol.layer.Image({
   visible : true,
   source : new ol.source.ImageArcGISRest({
    url : url,
    params : {
     "layerInfo" : layerInfoParam,
     "wrapDateLine" : wrapDateLineOption
    }
   })
  });

  layer.set('title', name);

  return layer;
 }
</script>

</head>
<body>
 <h2>My Map</h2>
 <div id="map" class="map"></div>
 <script type="text/javascript">
  var layer = createArcGISCacheLayer(null, null, null);

  var map = new ol.Map({
   target : 'map',
   layers : [ layer ],
   view : new ol.View({
    center : ol.proj.fromLonLat([ 37.41, 8.82 ]),
    zoom : 4
   })
  });

  function showHideMap() {
   if (!ol3d || !ol3d.getEnabled()){
    ol3d = new olcs.OLCesium({
     map : map,
    });
   }

   ol3d.setEnabled(!ol3d.getEnabled());
  }
 </script>

 <a href="javascript:showHideMap();">3d</a>

</body>
</html>

我希望ol-celium能够将已加载的2D地图格式化为3D并显示,而不是显示黑色地图。
1个回答

1
这是一个瓦片图层。
var layer = new ol.layer.Tile({
  source:  new ol.source.TileArcGISRest({
    url: 'https://services.arcgisonline.com/arcgis/rest/services/NatGeo_World_Map/MapServer'
  })
});

由于它是EPSG:3857并使用标准网格,因此将其设置为XYZ源并打开速度更快(请注意,与大多数XYZ源相比,x和y被颠倒)。

var layer = new ol.layer.Tile({
  source:  new ol.source.XYZ({
    url: 'https://services.arcgisonline.com/arcgis/rest/services/NatGeo_World_Map/MapServer/tile/{z}/{y}/{x}'
  })
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接