arcgis of js 4.x 笔记(1) 基础、map、在线底图、自定义底图(以及推荐的在线底图)

写这篇文章的主要目的有三:
1.为了记录学习arcgis of js 的过程。
2.回顾之前学习的记录并进行整理,为后面再次使用提供便捷。
3.帮助新手更好上手arcgis of js 4.x
另外:该文章只是从使用角度去赘述,不深入研究里面的方法,
如果有错误,请大佬在评论区指正。

1.简单的描述如何学习官网的api和例子。

首先arcgis of js 的3.x4.x在使用上有一定量的差距,4.x 整合了一些新的方法以及添加了一些新的控件,以及大量的3D效果。因为项目中都没运用到3D,所以大家可以通过官网API自行学习。

arcgis of js 4.x 官网: https://developers.arcgis.com/javascript/
官网我目前常用的就是列子Demo以及对于的api

在这里插入图片描述
在simple code 里面,可以搜索对应官方demo
在这里插入图片描述
或者点击查看对应demo或者点击 Explore in the sandbox 查看对应的代码
在这里插入图片描述

Api 这块可以搜索到具体的方法和对应的描述

在这里插入图片描述
对应使用方法在这里插入图片描述
这可以查看对应的例子
在这里插入图片描述

2.构造简单的地图

简单地图的构建描述
https://developers.arcgis.com/javascript/latest/sample-code/intro-mapview/index.html

简单的描述就是

1.引用ArcGIS API for JavaScript**

首先导入arcgis of js 的JS 和CSS
其中css中有不同主题(light或者dark)

<script src="https://js.arcgis.com/4.12/"></script>
<!--明亮主题 -->
<link  rel="stylesheet" href="https://js.arcgis.com/4.12/esri/themes/light/main.css"/>	
 <!--黑色主题 -->		
<!-- <link rel="stylesheet" href="https://js.arcgis.com/4.12/esri/themes/dark/main.css"/> --> 

然后写html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
    <title>创建简单的地图/title>
  </head>
</html>
2.加载模块

加载模块相当于导入对应的“js” ,要使用对应的方法都需要导入对应的“JS”(模块)

<script>
  require([ "esri/Map", "esri/views/MapView" ], function(Map, MapView) {
    // Code to create the map and view will go here
  });
</script>
3.构建代码
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
    <title>创建简单的地图</title>
    <style>
      html,
      body,
      #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    </style>
    <link rel="stylesheet" href="https://js.arcgis.com/4.13/esri/themes/light/main.css" />
    <script src="https://js.arcgis.com/4.13/"></script>
    <script>
      require(["esri/Map", "esri/views/MapView"], function(Map, MapView) {
        var map = new Map({
          basemap: "streets"  //加载对应的地图(不同底图)
        });
        var view = new MapView({
          container: "viewDiv", //  这个就是map div的ID
          map: map, // 加载对应(上面)的map
          zoom: 4, // 地图初始化是缩放的级别
          center: [15, 65] // 地图初始化是中心点的位置
        });
      });
    </script>
  </head>
  <body>
    <div id="viewDiv"></div>
  </body>
</html>

显示地图。
在这里插入图片描述
其中 basemap: “streets” 有不同类别

类别实例
topo在这里插入图片描述
streets在这里插入图片描述
satellite在这里插入图片描述
更多点击查看更多

如果想使用自定义的地图得使用 BasemapMapImageLayer 模块进行加载

<script>
  require([ "esri/Map",
           "esri/views/MapView", 
           "esri/Basemap",   //加载底图
           "esri/layers/MapImageLayer" //加载对应的img图层
            ],
  function( Map,
           MapView,
           Basemap,
           MapImageLayer) { 
			var layerBaseMap = new MapImageLayer({
                url: "http://localhost:6080/arcgis/rest/services/Earth10LL/MapServer",   
                //对应发布的底图
            });
            var customBasemap = new Basemap({
                baseLayers: [layerBaseMap],
                title: "Custom Basemap",
                id: "myBasemap"
            });
              const map = new Map({
                 basemap: customBasemap, //加载自定义底图
            });
            var view = new MapView({
                container: "mapDiv",
                map: map,
                zoom: 6,
                center: [123, 35],
            });

  });
</script>

2020年 4月 8日 更新
如果出现加了自定义地图,中心设置无效的情况,然后就可以使用

view.extent = new Extent({
	xmin: 12546100,
		ymin: 5031800,
		xmax: 14193600,
		ymax: 3633900,
		spatialReference: {
			wkid: 102100
		}
	});

其中导包路径可以在官网查询到
另外推荐一个直接可以使用的MapImageLayer网址
智图GeoQ

这个可以直接使用

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3.x是一款流行的JavaScript框架,而ArcGIS 4.x是一款强大的GIS工具包。如何结合Vue 3.x和ArcGIS 4.x以加载国内四种在线底图——百度、腾讯、高德、天地图的源代码呢? 首先,在Vue 3.x中创建一个新的组件,并且在初始化时,使用ArcGIS 4.x中的MapMapView类创建一个新的地图对象。然后,使用这个新的地图对象来加载国内四种在线底图之一的地址,例如使用百度地图,可以使用ArcGIS 4.x中的Basemap类和BasemapLayer类,以及BaiduMapsLayer类,通过以下代码实现: ```javascript import {Map, MapView} from '@arcgis/core'; import Basemap from '@arcgis/core/Basemap'; import BasemapLayer from '@arcgis/core/BasemapLayer'; import BaiduMapsLayer from '@arcgis/core/layers/BaiduMapsLayer'; export default { name: 'Map', mounted () { const map = new Map({ basemap: new Basemap({ baseLayers: [ new BasemapLayer({ url: 'https://maponline{subDomain}.bdimg.com/tile/?qt=vtile&x={col}&y={row}&z={level}&styles=pl&scaler=1&udt=20191210', subDomains: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], title: 'Baidu Map', id: 'baidu-map' }) ] }) }); const view = new MapView({ container: 'map', map: map, center: [118.7967, 32.060]; // 设置地图中心点的经纬度 zoom: 11 }); const baiduLayer = new BaiduMapsLayer(); map.add(baiduLayer); } }; ``` 这段代码首先使用Map类创建一个新的地图对象,然后使用Basemap类和BasemapLayer类创建一个新的底图,其中设置了百度地图地址、子域名、标题和id等信息。接着,使用MapView类创建一个新的地图视图对象,并设置地图中心坐标和缩放级别。最后,创建一个新的BaiduMapsLayer对象,并使用`map.add()`方法将其添加到地图中。 使用同样的方式,可以分别加载腾讯、高德和天地图的底图地址,在使用BaiduMapsLayer、QQMapsLayer、GaodeMapsLayer或TdtMapsLayer类加载相应的地图图层即可。 至此,我们就成功地实现了在Vue 3.x中结合ArcGIS 4.x加载国内四种在线底图的任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值