React中引入百度地图API 避坑

本文讲述了在React应用中遇到'BMap is not defined'问题的解决过程,涉及全局变量访问、地图容器元素设置及常见陷阱。作者分享了如何正确引入BMap API、使用window.BMap并确保地图容器尺寸,避免了常见的开发误区。
摘要由CSDN通过智能技术生成

‘BMap’ is not defined

在这里插入图片描述

原因: React脚手架中全局变量都要用window去访问
解决: BMap改成window.BMap访问, 或者将BMap从window中解构出来


BMap前加了window, 页面还是一片空白

在这里插入图片描述

原因: 没有给地图容器元素设置宽高
解决: 给地图容器元素设置宽高


正确的写法

  1. 在public / index.html 中引入百度地图API文件
 <script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=你的密钥"></script>
  1. 在组件中创建地图容器元素、初始化实例
import React from "react"
import './index.scss'
export default class Map extends React.Component
{
    componentDidMount()
    {
        // React脚手架中全局变量都要用window去访问
        //const BMap = window.BMap 这样写也可以
        const {BMap} = window
        // 初始化地图实例
        const map = new BMap.Map("container")
        // 设置中心点
        const point = new BMap.Point(116.404, 39.915);
        // 地图初始化,同时设置地图展示级别
        map.centerAndZoom(point, 15);
    }
    render()
    {
        return (
            <div className="map">
                {/* 地图容器元素 */}
                <div id="container" style={{width:'800px',height:'800px'}}/>
        </div>
        )
    }
}

在这里插入图片描述

容易踩坑的地方:

  1. BMap访问前要加window
  2. 定义地图容器元素时用id ,不是类名
  3. 没有给地图容器元素设置宽高

很幸运, 这三个地方我都踩到了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值