美文网首页
arcgis-api-for-js-之创建一个3D地图

arcgis-api-for-js-之创建一个3D地图

作者: jiegiser | 来源:发表于2019-06-19 14:34 被阅读0次

    1.引用资源

    首先跟创建2D地图一样,在head标签内部,使用script和link标签引用ArcGIS API for JavaScript,代码如下:

    <link rel="stylesheet" href="https://js.arcgis.com/4.6/esri/css/main.css">
    <script src="https://js.arcgis.com/4.6/"></script>
    

    同样该script标记从CDN加载ArcGIS API for JavaScript。当新版本的API发布时,更新版本号以对应新发布的版本。

    该link标签引用main.css样式表,其中包含特定于Esri窗口小部件和组件的样式。

    2.加载模块

    其中加载模块中的内容,跟创建2D地图一样,这里就不在累赘,可以参考前期的创建一个2D地图的文章,代码如下:

    <script>
    require([
      "esri/Map",
      "esri/views/SceneView",
      "dojo/domReady!"
    ], function(Map, SceneView) {
      // Code to create the map and view will go here
    });
    </script>
    

    esri/views/SceneView - 加载允许在3D中查看地图的代码

    3.创建地图

    创建一个Map对象,它是从esri/Map模块加载的Map类的引用。我们可以通过Map对象传递给构造函数来指定地图属性,例如和“ground”。这里是设置地图的属性,比如说我们需要加载的底图啊,地图的地面属性啊等等,而后面我们创建的3D视图,是设置我们所看到地图的样子,可以设置显示的中心位置,以及放大的级数等等。代码如下:

    require([
      "esri/Map",
      "esri/views/SceneView",
      "dojo/domReady!"
    ], function(Map, SceneView) {
      var map = new Map({
        basemap: "streets",
        ground: "world-elevation"
      });
    });
    

    其中basemap为加载的底图,其他底图的选项有:satellite,hybrid,topo,gray,dark-gray,oceans,osm,national-geographic。
    ground指定地图的表面属性,字符串“world-elevation”使用世界高程服务指定地面的一个实例。

    4.创建一个3D视图

    创建一个新的SceneView并通过传递一个对象给它的构造函数来设置它的属性:
    代码如下:

    require([
      "esri/Map",
      "esri/views/SceneView",
      "dojo/domReady!"
    ], function(Map, SceneView) {
      var map = new Map({
        basemap: "streets",
        ground: "world-elevation"
      });
      var view = new SceneView({
        container: "viewDiv",  // container为容器的意思,这里对将包含视图的DOM节点的引用,就是承载地图的div容器的id。
        map: map  // 引用我们在上一步中创建的地图对象
        scale: 500000,          // 设置显示的比例尺的大小
        center: [103.73, 36.03] // 设置中心显示的经纬度。这里设置的经纬度为我们大兰州,哈哈
      });
    });
    

    5.定义页面内容

    到此为止,创建地图和视图所需的JavaScript已经完成了!下一步是添加关联的HTML查看地图。对于这个例子,HTML非常简单:添加一个body标签,它定义了浏览器中可见的内容,以及div在视图创建的主体内部的一个元素。

    <body>
      <div id="viewDiv"></div>
    </body>
    

    在div有“viewDiv”的ID匹配传递给SceneView的标识container在constructor属性。

    6.样式页面

    使用style标签中的标签来设置页面的内容head。要使地图填充浏览器窗口,在页面中添加以下CSS代码:

    <style>
      html, body, #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    </style>
    

    最终,小伙伴们,我们成功利用ArcGIS API for JavaScript 4.6,构建了第一个Web应用程序,效果请戳下面链接http://jiegiser.win/arcgisAPI/creat3Dmap.html

    最后整体代码如下:
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
        <title>SceneView - 创建一个3D地图</title>
        <style>
            html,
            body,
            #viewDiv {
                margin: 0;
                padding: 0;
                height: 100%;
                width: 100%;
            }
        </style>
        <!--使用script和link标签引用ArcGIS API for JavaScript-->
        <link rel="stylesheet" href="https://js.arcgis.com/4.6/esri/css/main.css">
        <script src="https://js.arcgis.com/4.6/"></script>
        <script>
            require(["esri/Map", "esri/views/SceneView", "dojo/domReady!"], function(Map, SceneView) {
                var map = new Map({
                    basemap: "streets",
                    ground: "world-elevation" //ground指定地图的表面属性,字符串“world-elevation”使用世界高程服务指定地面的一个实例。
                });
                var view = new SceneView({
                    container: "viewDiv", // container为容器的意思,这里对将包含视图的DOM节点的引用,就是承载地图的div容器的id。
                    map: map, // 引用我们在上一步中创建的地图对象
                    scale: 500000, // 设置显示的比例尺的大小
                    center: [103.73, 36.03] // 设置中心显示的经纬度。这里设置的经纬度为我们大兰州,哈哈
                });
            });
        </script>
    </head>
    
    <body>
        <div id="viewDiv"></div>
    </body>
    
    </html>
    

    相关文章

      网友评论

          本文标题:arcgis-api-for-js-之创建一个3D地图

          本文链接:https://www.haomeiwen.com/subject/ffhkqctx.html