arcgis api加载天地图

使用ArcGIS API加载天地图,需先申请天地图Key,再通过特定代码配置实现,如以basetilelayer方式加载。

使用 ArcGIS API 加载天地图

arcgis api加载天地图

一、准备工作

获取天地图瓦片服务地址

天地图提供了多种类型的地图瓦片服务,例如矢量地图、影像地图等,以下是一些常用的天地图瓦片服务地址示例:

地图类型 服务地址
矢量地图 http://t{0-7}.tianditu.gov.cn/vec_w/wmts?tk=YOUR_TIANMAP_API_KEY
影像地图 http://t{0-7}.tianditu.gov.cn/img_w/wmts?tk=YOUR_TIANMAP_API_KEY

> 注意:需要去天地图官网申请 API Key,将上述地址中的YOUR_TIANMAP_API_KEY 替换为你实际获取的密钥。

引入 ArcGIS API 相关库

在 HTML 文件中,通过<script> 标签引入 ArcGIS JavaScript API 的相关脚本,

<script src="https://js.arcgis.com/4.26/"></script>

二、创建地图实例并加载天地图瓦片

定义地图配置

使用 ArcGIS API 创建地图时,需要定义地图的相关配置,包括中心点、缩放级别等,要指定天地图瓦片作为图层添加到地图中,以下是一个简单的示例代码:

arcgis api加载天地图

require([
  "esri/Map",
  "esri/layers/TileLayer"
], function(Map, TileLayer) {
  // 定义天地图矢量图层
  var tiandituVecLayer = new TileLayer({
    url: "http://t{0-7}.tianditu.gov.cn/vec_w/wmts?tk=YOUR_TIANMAP_API_KEY",
    sublayers: [{
      id: 0,
      title: "矢量地图",
      visible: true
    }]
  });
  // 创建地图实例并添加天地图矢量图层
  var map = new Map({
    basemap: "streets", // 可以先使用 ArcGIS 自带的底图,后续可替换为天地图图层
    // 设置地图初始中心点和缩放级别
    center: [116.397428, 39.90923], // 以北京为例
    zoom: 10,
    // 将天地图矢量图层添加到地图的图层列表中
    layers: [tiandituVecLayer]
  });
  // 如果只想显示天地图图层,可以移除默认的 basemap 并设置天地图图层为唯一图层
  map.remove(map.basemapGalleryLayer);
  map.add(tiandituVecLayer);
});

处理瓦片图层的子图层(可选)

天地图瓦片服务可能包含多个子图层,比如矢量地图服务中有不同级别的道路、水系等子图层,如果需要对特定子图层进行操作,比如控制其显示或设置样式等,可以通过sublayers 属性进一步配置,只显示天地图矢量图层中的某个特定子图层:

var tiandituVecLayer = new TileLayer({
  url: "http://t{0-7}.tianditu.gov.cn/vec_w/wmts?tk=YOUR_TIANMAP_API_KEY",
  sublayers: [{
    id: 0, // 子图层 ID,根据天地图服务文档确定具体含义
    title: "矢量地图 基础层",
    visible: true // 设置为可见
  }, {
    id: 1,
    title: "矢量地图 道路层",
    visible: false // 设置为不可见,可根据需求调整
  }]
});

三、优化与交互(可选)

添加缩放控件等交互组件

为了让用户更好地操作地图,可以添加一些常用的交互组件,如缩放控件、导航控件等,ArcGIS API 提供了丰富的控件可供使用,添加缩放控件到地图右上角:

map.addControl(new esri.dijit.Zoom({
  position: "top-right"
}));

响应地图事件(可选)

可以根据业务需求,监听地图的各种事件,如点击事件、鼠标移动事件等,并在事件回调函数中进行相应的处理,监听地图的点击事件,在点击位置添加一个标记:

map.on("click", function(event) {
  var point = event.mapPoint;
  var marker = new esri.Graphic(point, new esri.symbol.SimpleMarkerSymbol());
  map.graphics.add(marker);
});

四、相关问题与解答

问题 1:申请天地图 API Key 后,如何确保其在 ArcGIS API 中正常使用?

arcgis api加载天地图

解答:申请到天地图 API Key 后,将其准确无误地替换到天地图瓦片服务地址中的tk 参数位置,确保在网络环境中能够正常访问天地图的瓦片服务地址,没有被防火墙或其他网络限制所阻挡,要注意天地图 API Key 的使用权限和有效期等相关规则,按照天地图官方的要求合法使用。

问题 2:如果我想同时加载天地图的矢量图层和影像图层,该如何操作?

解答:可以按照类似加载单个天地图图层的方法,分别创建两个TileLayer 实例,一个用于矢量图层,一个用于影像图层,然后将这两个图层都添加到地图的layers 属性中。

require([
  "esri/Map",
  "esri/layers/TileLayer"
], function(Map, TileLayer) {
  // 定义天地图矢量图层
  var tiandituVecLayer = new TileLayer({
    url: "http://t{0-7}.tianditu.gov.cn/vec_w/wmts?tk=YOUR_TIANMAP_API_KEY",
    sublayers: [{
      id: 0,
      title: "矢量地图",
      visible: true
    }]
  });
  // 定义天地图影像图层
  var tiandituImgLayer = new TileLayer({
    url: "http://t{0-7}.tianditu.gov.cn/img_w/wmts?tk=YOUR_TIANMAP_API_KEY",
    sublayers: [{
      id: 0,
      title: "影像地图",
      visible: true
    }]
  });
  // 创建地图实例并添加天地图矢量和影像图层
  var map = new Map({
    basemap: "streets",
    center: [116.397428, 39.90923],
    zoom: 10,
    layers: [tiandituVecLayer, tiandituImgLayer] // 同时添加两个图层
  });
  // 移除默认的 basemap(如果需要只显示天地图图层)
  map.remove(map.basemapGalleryLayer);
});

这样,在创建地图实例时,就会同时加载并显示天地图的矢量图层和影像图层,你可以根据需要控制各个图层的显示顺序、可见性等属性。

以上内容就是解答有关“arcgis api加载天地图”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-04-25 16:05
下一篇 2025-04-25 16:13

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信