当前位置:首页 > React

如何在react中嵌入高德地图

2026-01-26 05:22:56React

安装高德地图 JavaScript API

在项目中引入高德地图的 JavaScript API。可以通过在 public/index.html 中添加脚本标签实现:

<script src="https://webapi.amap.com/maps?v=2.0&key=你的高德地图Key"></script>

你的高德地图Key 替换为从高德地图开发者平台申请的密钥。

创建地图组件

新建一个 React 组件用于承载地图。使用 useEffect 确保 DOM 加载完成后初始化地图:

如何在react中嵌入高德地图

import React, { useEffect } from 'react';

const MapComponent = () => {
  useEffect(() => {
    const map = new AMap.Map('map-container', {
      viewMode: '2D',
      zoom: 11,
      center: [116.397428, 39.90923] // 默认北京中心点
    });
    return () => map.destroy(); // 组件卸载时销毁地图
  }, []);

  return <div id="map-container" style={{ width: '100%', height: '400px' }} />;
};

添加地图控件

通过 AMap.plugin 动态加载插件,例如添加缩放控件和工具条:

useEffect(() => {
  const map = new AMap.Map('map-container', { /* 配置 */ });

  AMap.plugin(['AMap.ToolBar', 'AMap.Scale'], () => {
    map.addControl(new AMap.ToolBar());
    map.addControl(new AMap.Scale());
  });
}, []);

绘制标记点

使用 AMap.Marker 在地图上添加标记,并绑定事件:

如何在react中嵌入高德地图

useEffect(() => {
  const marker = new AMap.Marker({
    position: [116.39, 39.9],
    title: '标记点'
  });
  marker.setMap(map);

  marker.on('click', () => {
    alert('点击了标记');
  });
}, []);

响应式地图容器

通过监听窗口大小变化调整地图尺寸:

useEffect(() => {
  const handleResize = () => {
    map && map.setFitView();
  };
  window.addEventListener('resize', handleResize);
  return () => window.removeEventListener('resize', handleResize);
}, [map]);

自定义信息窗口

创建信息窗口并关联到标记点:

const infoWindow = new AMap.InfoWindow({
  content: '<div style="padding:5px;">自定义内容</div>',
  offset: new AMap.Pixel(0, -30)
});

marker.on('click', () => {
  infoWindow.open(map, marker.getPosition());
});

注意事项

  • 确保高德地图 Key 已正确申请且未超出调用限制
  • 若需 SSR 支持,需动态加载高德 API(如通过 next/dynamic
  • 地图容器需指定明确的宽度和高度样式
  • 频繁操作地图时注意性能优化,避免内存泄漏

标签: 地图如何在
分享给朋友:

相关文章

Vue实现疫情地图

Vue实现疫情地图

Vue实现疫情地图的方法 使用第三方地图库(如高德、百度地图) 在Vue项目中引入高德或百度地图的JavaScript API,通过API获取疫情数据并在地图上展示。需要注册开发者账号获取API密钥。…

vue地图圆圈实现

vue地图圆圈实现

vue地图圆圈实现 在Vue中实现地图圆圈功能,通常需要结合地图库如百度地图、高德地图或Leaflet等。以下是基于不同地图库的实现方法: 使用百度地图API 引入百度地图API 在index.h…

vue实现像素地图

vue实现像素地图

Vue 实现像素地图的方法 使用 Canvas 绘制像素地图 在 Vue 中可以通过 Canvas 实现像素地图的绘制。Canvas 提供了灵活的绘图 API,适合动态生成像素风格的图形。…

vue实现地图距离

vue实现地图距离

Vue 中实现地图距离计算的方法 在 Vue 中实现地图距离计算通常需要集成第三方地图 API(如百度地图、高德地图或 Google Maps)。以下是几种常见的方法: 使用高德地图 API 高德地…

如何在react中使用VUE

如何在react中使用VUE

在React中直接使用Vue组件通常需要借助第三方工具或库,因为两者设计理念和渲染机制不同。以下是几种可行的方案: 通过微前端架构集成 微前端框架如single-spa或qiankun可以同时加载R…

如何在react中引入swiper

如何在react中引入swiper

在 React 中引入 Swiper Swiper 是一个流行的滑动组件库,支持移动端和桌面端的滑动效果。以下是在 React 项目中引入 Swiper 的详细步骤。 安装 Swiper 依赖 使用…