react + ts +高德地图的使用 初次使用记录下

本文记录了在React项目中使用TypeScript集成高德地图遇到的问题及解决方案。由于官方静态引用需明确协议,导致问题,后通过安装@amap/amap-jsapi-loader npm包成功解决。并封装了getAMap函数,该函数接收div元素和AMap.Map配置,返回包含地图实例和高德原生构造函数的对象。
摘要由CSDN通过智能技术生成
  1. 遇到坑 高德官网静态引用地图 不能使用 // 必须写上http 或https协议 而且在ts 中 AMap会标红 
  2.  感谢胡哥提醒使用高德npm包  新版高德有npm 包万幸  npm i @amap/amap-jsapi-loader
  3. 封装了一个 getAMap 函数 第一个参数是需要渲染地图的div 第2个是AMap.Map配置 具体配置参考高德官网

import AMapLoader from '@amap/amap-jsapi-loader';

export let getAMap = (id = 'container',config = {}) => {
  return new Promise((yes, no) => {
    AMapLoader.load({
      key: '你的key', // 申请好的Web端开发者Key,首次调用 load 时必填
      version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
      plugins: [], //插件列表
    })
      .then((AMap) => {
       let map =  new AMap.Map(id, {
            zoom: 11,//级别
            center: [116.397428, 39.90923],//中心点坐标
            layers: [//使用多个图层 
            ],
            viewMode: '3D',//使用3D视图
            ...config
          });
        yes({
OpenLayers是一个开源的JavaScript库,用于创建互动式地图应用。当与React(一个流行的前端组件化库)结合,并使用TypeScript(一种强类型的JavaScript超集),可以构建功能强大的Web地图应用程序,如使用高德地图底图。 要在这种组合中创建随地图缩放改变颜色的热力图,你可以按照以下步骤操作: 1. **设置基础环境**:安装必要的依赖,包括`@types/openlayers`, `@types/react`, 和 `react-openlayers` 等类型支持包,以及高德地图相关的API。 2. **创建React组件**:使用TypeScript编写React组件,例如`MapComponent`,作为容器管理地图实例和热力图。 ```typescript import React from 'react'; import { MapView, HeatSource } from 'react-openlayers'; interface Props { // 高德地图API key amapKey: string; } const MapWithHeatmap: React.FC<Props> = ({ amapKey }) => { const [heatmapData, setHeatmapData] = useState<any[]>([]); // 数据源 return ( <MapView style={{ height: '500px' }} center={[116.404, 39.9]} zoom={14} attributionControl={false} mapProvider={(amap) => new AMap.MapProvider({ container: 'map', mapStyle: 'amap.normal', // 使用高德默认样式 ak: amapKey, }) } > <HeatSource data={heatmapData} radius={20} blurRadius={10}> {({ source }) => <source />} </HeatSource> </MapView> ); }; export default MapWithHeatmap; ``` 3. **处理数据并更新热力图**:在地图的交互事件(比如缩放事件`OL.MapEvent.ZoomEnd`)中,获取当前地图的视野范围,然后根据这个范围动态计算和更新`heatmapData`。这通常涉及到一些地理编码和数据统计的技巧。 ```typescript useEffect(() => { const calculateHeatmapData = () { // 根据地图视野范围计算热力图数据 // 示例代码仅作演示,实际实现需参考高德地图API文档 // 假设heatmapData是个数组,存储每个点的坐标和权重 // 更新heatmapData setHeatmapData(calculatePoints()); }; // 当地图缩放级别改变时,重新计算热力图数据 const subscription = map.events.on('zoomend', calculateHeatmapData); return () => subscription.unsubscribe(); }, [map]); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值