React 基础调用高德地图版

本文详细介绍了如何在React项目中使用`amap-jsapi-loader`下载并集成AMAPJavaScriptAPI,创建MapContainer.js和CSS文件,设置地图容器样式,并展示了React类组件和函数组件的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载 npm i @amap/amap-jsapi-loader --save

npm i @amap/amap-jsapi-loader --save
新建 MapContainer.js 文件

在项目中新建 MapContainer.js 文件,用作地图组件脚本。(可以自己定义文件)

新建 MapContainer.css 文件

在项目中新建 MapContainer.css 文件,用作地图组件样式。(可以自己定义文件)

设置地图容器样式

在 MapContainer.css样式文件中设置地图容器样式

.container{
  padding: 0px;
  margin: 0px;
  width: 100%;
}
引入 JS API  Loader

在 MapContainer.js脚本文件中引入 amap-jsapi-loader依赖

import AMapLoader from '@amap/amap-jsapi-loader';
React类组件的形式完整代码
import React, { Component } from 'react';
import styles from "./MapContainer.css";
import AMapLoader from '@amap/amap-jsapi-loader';

class  MapComponent extends Component{
  constructor(){
    super();      
    this.map = null;
  }
  // 2.dom渲染成功后进行map对象的创建
  componentDidMount(){
    AMapLoader.load({
      key:"",                     // 申请好的Web端开发者Key,首次调用 load 时必填
      version:"2.0",              // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
      plugins:[''],               // 需要使用的的插件列表,如比例尺'AMap.Scale'等
    }).then((AMap)=>{
      this.map = new AMap.Map("container",{ //设置地图容器id
        viewMode:"3D",         //是否为3D地图模式
        zoom:5,                //初始化地图级别
        center:[105.602725,37.076636], //初始化地图中心点位置
      });
    }).catch(e=>{
      console.log(e);
    })
  }
  render(){
      // 1.初始化创建地图容器,div标签作为地图容器,同时为该div指定id属性;
      return (
        <div id="container" className={styles.container} style={{ height: '800px' }} > 
        </div>
    );
  }
}
//导出地图组建类
export default MapComponent;

函数组件完整代码

import { useEffect } from "react";
import styles from "./MapContainer.css";
import AMapLoader from "@amap/amap-jsapi-loader";

export default function MapContainer() {
  let map = null;

  useEffect(() => {
    AMapLoader.load({
      key: "", // 申请好的Web端开发者Key,首次调用 load 时必填
      version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
      plugins: [], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
    })
      .then((AMap) => {
        map = new AMap.Map("container", {
          // 设置地图容器id
          viewMode: "3D", // 是否为3D地图模式
          zoom: 11, // 初始化地图级别
          center: [116.397428, 39.90923], // 初始化地图中心点位置
        });
      })
      .catch((e) => {
        console.log(e);
      });

    return () => {
      map?.destroy();
    };
  }, []);

  return (
    <div
      id="container"
      className={styles.container}
      style={{ height: "800px" }}
    ></div>
  );
}

以上只是最基础的代码

### React 应用中配置和使用高德地图 API 实现内网访问 #### 准备工作 为了在 React 中集成高德地图 API 并支持内网访问,需完成如下准备工作: - 注册成为高德开放平台开发者,并创建新的应用获取专属 key 值[^2]。 #### 修改安全设置 对于内网环境下加载资源的需求,应调整 `_AMapSecurityConfig` 的 `securityJsCode` 参数以适应内部网络环境。此参数用于验证请求合法性,确保即使是在隔离环境中也能正常调用服务[^1]。 ```javascript window._AMapSecurityConfig = { securityJsCode: '您的安全密钥', }; ``` #### 调整脚本引入方式 考虑到内网部署场景,建议将官方提供的外部 JavaScript 文件下载至本地服务器或指定路径下,修改其 URL 为局域网 IP 加上相应端口号的形式来指向这些静态资源文件[^4]。 例如,原本通过 CDN 获取的地图 SDK 变更为从本地读取: ```html <script type="text/javascript" src="http://localhost:8080/mapApi.min.js"></script> <!-- 或者 --> <script type="text/javascript" src="http://192.168.x.xx:port/path/to/your/local/amap-sdk-file.js"></script> ``` 注意替换上述示例中的 `localhost:8080` 和 `192.168.x.xx:port` 为你实际使用的 IP 地址与端口组合;同时确认所指目录确实存在对应名称的 js 文件[^3]。 #### 初始化 Map 对象 当页面 DOM 完全加载完毕后,再执行地图实例化的操作。这可以通过监听窗口 load 事件或者利用 React 生命周期钩子函数如 `useEffect()` 来实现。 ```jsx import React, { useEffect } from "react"; function MyMapComponent() { useEffect(() => { const initializeMap = () => { let containerDiv = document.getElementById("container"); if (!containerDiv) return; var map = new AMap.Map(containerDiv, { zoom: 12, }); }; window.addEventListener("load", initializeMap); return () => window.removeEventListener("load", initializeMap); }, []); return <div id="container" style={{ width: "100%", height: "500px" }}></div>; } export default MyMapComponent; ``` 这段代码展示了如何在一个简单的 React 组件里定义一个名为 `MyMapComponent` 的组件,它会在挂载完成后尝试初始化一张缩放级别为 12 的高德地图实例,并将其渲染到具有特定 ID (`container`) 的 div 元素中去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值