arcgis api for js 4.19 尝鲜(React + ts+ arcgis api)

前言

前段时间看到 arcgis api 更新 4.19 版本,而且全面拥抱 ES Modules 开发模式,这无疑是每个 giser 的福音啊;之前的版本基于 dojo 的那种笨重前端框架开发,学习成本大;基于 AMD 模块加载,真的是让人抓狂;虽然很多人也通过 webpack 修改加载策略,但是对于前端小白来说,配置一个 arcgis api 开发环境真的是难。。接下来我们来看看这个新版本;

搭建开发环境

初始化项目

首先我们搭建一个基本的开发环境,标题也说了,是基于 react + ts + arcgis api 进行开发;那么首先初始化一个 react + ts 的开发环境,输入下面命令:

npx create-react-app react-arcgis --template typescript --use-npm

项目名随便起,我这里是 react-arcgis

这里我就不做更多介绍,有关 react 框架的开发,大家可以去官网学习学习、或者你这里也可以初始化一个 vue 的项目,都可以;

初始化三维场景

然后我们初始化一个三维场景;操作很简单,首先安装 arcgis 的 npm 包;输入下面命令:


npm install @arcgis/core

新建一个组件叫 MapContainer;加上初始化三维场景并添加一个图层,如下代码:

import React, { useEffect, useRef } from 'react'
import { Map, SceneView, FeatureLayer, WebTileLayer } from '../../modules/arcgis.modules'
import './index.css'

const MapContainer = () => {
  const mapRef = useRef<HTMLDivElement>(null)

  useEffect(() => {
    const map = createMap()
    addLayers(map)
    // 销毁 map 对象
    return () => {
      map && map.destroy()
    }
  }, [])

  const createMap = () => {
    const map = new Map({
       basemap: 'osm',
      ground: 'world-elevation'
    })

    mapRef.current && new SceneView({
      map: map,
      center: [-118.805, 34.027],
      zoom: 13,
      container: mapRef.current
    })
    return map
  }

  const addLayers = (map: Map) => {
    const trailheadsLayer = new FeatureLayer({
      url: "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trailheads_Styled/FeatureServer/0"
    })
    map.add(trailheadsLayer)
  }

  return (
    <div ref={mapRef} className="map-container"></div>
  )
}

export default MapContainer

对于这个 arcgis.modules,是我写了一个文件,用于导出 arcgis 对应的模块;如下代码:

import Map from '@arcgis/core/Map'
import MapView from '@arcgis/core/views/MapView'
import FeatureLayer from '@arcgis/core/layers/FeatureLayer'
import SceneView from '@arcgis/core/views/SceneView'
import WebTileLayer from '@arcgis/core/layers/WebTileLayer'

export {
  Map,
  MapView,
  SceneView,
  FeatureLayer,
  WebTileLayer
}

实现效果如下:

在这里插入图片描述

加载天地图

加载天地图,是通过 WebTileLayer 实现,代码如下:

import React, { useEffect, useRef } from 'react'
import { Map, SceneView, WebTileLayer } from '../../modules/arcgis.modules'
import './index.css'

const MapContainer = () => {
  const mapRef = useRef<HTMLDivElement>(null)

  useEffect(() => {
    const map = createMap()
    addTdtLayers(map)
    // 销毁 map 对象
    return () => {
      map && map.destroy()
    }
  }, [])

  const createMap = () => {
    const map = new Map({
      ground: 'world-elevation'
    })

    mapRef.current && new SceneView({
      map: map,
      center: [103, 36],
      zoom: 13,
      container: mapRef.current
    })
    return map
  }

  const addTdtLayers = (map: Map) => {
    const tiledLayer = new WebTileLayer({
      urlTemplate: 'http://{subDomain}.tianditu.gov.cn/DataServer?T=vec_w&x={col}&y={row}&l={level}&tk=秘钥',
      subDomains: ["t0", "t1", "t2", "t3","t4", "t5", "t6", "t7"],
    })

    const tiledLayer_poi = new WebTileLayer({
      urlTemplate:
          "http://{subDomain}.tianditu.gov.cn/DataServer?T=cva_w&x={col}&y={row}&l={level}&tk=秘钥",
      subDomains: ["t0", "t1", "t2", "t3","t4", "t5", "t6", "t7"],
    })

    map.layers.addMany([tiledLayer, tiledLayer_poi])
  }

  return (
    <div ref={mapRef} className="map-container"></div>
  )
}

export default MapContainer

实现效果如下:

在这里插入图片描述

有需要该项目的可以从这个地址 clone :

https://github.com/jiegiser/arcgis-react-demo

可以关注我的公众号,会分享一个 webgis 相关开发经验;
在这里插入图片描述

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
ArcGIS API for JavaScript是一个强大的编程接口,用于开发基于地理空间数据的Web应用程序。它提供了丰富的功能和工具,使开发者能够创建交互式地图、图表和数据可视化等。 首先,要开始ArcGIS API for JavaScript开发,需要先了解基本的Web开发技术,比如HTML、CSS和JavaScript。还应该了解地理信息系统(GIS)的基本概念,以及如何使用ArcGIS平台的数据和服务。 在开始开发之前,可以参考官方提供的开发者文档和教程,在ArcGIS开发者网站上有丰富的资源和示例代码。这些资源可以帮助开发者快速入门并了解API的基本用法和功能。 首先,要编写一个简单的地图应用程序,可以使用HTML和JavaScript创建一个网页,并在网页上嵌入ArcGIS API for JavaScript的库文件。通过使用APIJavaScript类和方法,可以定义一个地图容器,并添加各种图层、图标和交互元素。 在开发过程中,还可以探索API提供的其他功能,比如地理处理、地理编码和空间分析等。API还提供了丰富的UI组件和工具,方便开发者创建交互式的地图界面。 除了官方文档和教程之外,还可以参考社区中其他开发者的经验和示例代码。在ArcGIS开发者论坛和开发者社区中,可以与其他开发者交流,并获取开发过程中遇到的问题的解决方案。 总之,ArcGIS API for JavaScript提供了丰富的功能和资源,使地理空间数据的Web应用程序开发变得容易和高效。通过学习基本的Web开发技术和GIS概念,并参考官方文档和社区资源,开发者可以快速上手并创建出高质量的地图应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiegiser#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值