在 React 中使用 ArcGIS JavaScript SDK 构建地图应用

创建React工程

shell 复制代码
$ npx install -g create-react-app
$ create-react-app my-react-arcgis-app
$ cd my-react-arcgis-app
$ npm start

安装ArcGIS库

shell 复制代码
$ npm install @arcgis/core

创建ArcGIS地图组件

JavaScript 复制代码
import React, { useEffect, useRef } from 'react';
import Map from '@arcgis/core/Map';
import MapView from '@arcgis/core/views/MapView';
import FeatureLayer from '@arcgis/core/layers/FeatureLayer';

export default function MyMapViewer({}) {

    const mapRef = useRef();

    useEffect(() => {
        const map = new Map({
            basemap: 'streets-navigation-vector'
        });

        const view = new MapView({
            container: mapRef.current,
            map: map,
            center: [-79.940, 32.788],
            zoom: 16
        });

        const featureLayer = new FeatureLayer({
            url: 'https://services.arcgis.com/P3ePLMYs2RVChkJx/ArcGIS/rest/services/Charleston_Buildings_SLR_2080/FeatureServer/85',
            popupTemplate: {
                title: "{BuildingFID}",
                outFields: ["*"],
                content: "{BuildingFID}"
            },
        });

        map.add(featureLayer);

        return () => {
            if (view) {
                view.destroy()
            }
        };
    }, []);

    const mapStyle = {
        width: '100%',
        height: '100%',
        position: 'absolute',
        margin: 0,
        padding: 0,
    };

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

使用ArcGIS地图组件

修改App.js,内容如下:

JavaScript 复制代码
import MyMapViewer from './MyMapViewer';
import './App.css';

function App() {

  return (
    <div className="app">
      <h1>My ArcGIS App</h1>
      <MyMapViewer />
    </div>
  );
}

export default App;

修改App.css,在文件夹最后添加ArcGIS的css

JavaScript 复制代码
@import 'https://js.arcgis.com/4.29/@arcgis/core/assets/esri/themes/light/main.css';
相关推荐
踢足球092918 分钟前
寒假打卡:2026-2-7
java·开发语言·javascript
楚轩努力变强38 分钟前
iOS 自动化环境配置指南 (Appium + WebDriverAgent)
javascript·学习·macos·ios·appium·自动化
John_ToDebug1 小时前
引擎深处的漫游者:构建浏览器JavaScript引擎的哲学与技艺
javascript·chrome·js
早點睡3901 小时前
基础入门 React Native 鸿蒙跨平台开发:react-native-flash-message 消息提示三方库适配
react native·react.js·harmonyos
程序猿阿伟1 小时前
《TypeScript中Protobuf到运行时类型安全的转换指南》
javascript·安全·typescript
前端小菜袅2 小时前
PC端原样显示移动端页面方案
开发语言·前端·javascript·postcss·px-to-viewport·移动端适配pc端
Highcharts.js2 小时前
如何使用Highcharts SVG渲染器?
开发语言·javascript·python·svg·highcharts·渲染器
爱问问题的小李2 小时前
ue 动态 Key 导致组件无限重置与 API 重复提交
前端·javascript·vue.js
码云数智-大飞2 小时前
从回调地狱到Promise:JavaScript异步编程的演进之路
开发语言·javascript·ecmascript
早點睡3902 小时前
高级进阶 ReactNative for Harmony项目鸿蒙化三方库集成实战:react-native-image-picker(打开手机相册)
react native·react.js·harmonyos