【react】当react框架遇上百度地图
我遇到的问题
我解决问题的思路

- /*剩下的部分自己想象*/
- <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=我的的秘钥"></script>
- /*剩下的部分自己想象*/
- import React from 'react'
- class Test extends React.Component{
- componentDidMount () {
- var map = new BMap.Map("allmap")
- }
- render () {
- return (<div id='allmap'></div>)
- }
- }


解决方法
方法一:用window对象保存BMap变量,实现HTML文件和JS文件间的变量传递
- <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=eBGR7XzaPhB5UbYARl3E7ksdkMdgrCw7"></script>
- <script>
- window.BMap = BMap
- </script>
- var BMap = window.BMap//取出window中的BMap对象
- var map = new BMap.Map("allmap"); // 创建Map实例
//通过map调用API
- import React from 'react'
- import ReactDOM from 'react-dom'
- class BaiduMap extends React.Component {
- componentDidMount () {
- var BMap = window.BMap
- var map = new BMap.Map("allmap"); // 创建Map实例
- map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 初始化地图,设 置中心点坐标和地图级别
- map.addControl(new BMap.MapTypeControl()); //添加地图类型控件
- map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的
- map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
- }
- render () {
- return (
- <div>
- <div
- id='allmap'
- style={{
- width:'100vw',
- height:'100vh'
- }} />
- </div>
- )
- }
- }
- ReactDOM.render(
- <BaiduMap />,
- document.getElementById('root')
- )

方法二.通过webpack的externals加载BMap使它可以通过require或import引入
- module.exports = {
- /*此处省略了entry,output,modules等配置*/
- externals:{
- 'BMap':'BMap'
- },
- }
- import BMap from 'BMap'
- var map = new BMap.Map("allmap"); // 创建Map实例
- //通过map调用API
- import React from 'react'
- import ReactDOM from 'react-dom'
- import BMap from 'BMap'
- class BaiduMap extends React.Component {
- componentDidMount () {
- var map = new BMap.Map("allmap"); // 创建Map实例
- map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 初始化地图,设置中心点坐标和地图级别
- map.addControl(new BMap.MapTypeControl()); //添加地图类型控件
- map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的
- map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
- }
- render () {
- return (
- <div>
- <div
- id='allmap'
- style={{
- width:'100vw',
- height:'100vh'
- }} />
- </div>
- )
- }
- }
- ReactDOM.render(
- <BaiduMap />,
- document.getElementById('root')
- )
webpack的externals的具体作用

百度地图新手(尤其是用react的)容易犯的错误及其解决方式
1.忘记写< div id= 'allmap' >< /div >这个元素

2.在渲染前就执行了 var map = new BMap.Map("allmap")
- render () {
- var map = new BMap.Map("allmap"); // 创建Map实例
- return (<div id='allmap' />)
- )
- }
- class BaiduMap extends React.Component {
- componentDidMount () {
- var map = new BMap.Map("allmap"); // 创建Map实例
- }
- render () {
- return <div id='allmap' />
- )
- }
- render () {
- return <div id='allmap' style={{width:'100%',height:'100px'}} />
- }
一封反馈给百度地图的工作者们的信件


【react】当react框架遇上百度地图的更多相关文章
- 当react框架遇上百度地图
百度地图官方文档的使用指导是这样说的:在页面中引入<script type="text/javascript" src="http://api.map.baid ...
- MUI框架-13-使用百度地图 API(图文教程)
MUI框架-13-使用百度地图 API(图文教程) 后面有实例,转载请注明出处 一.申请百度地图权限 1.打开 百度地图开放平台:http://lbsyun.baidu.com/apiconsole/ ...
- 同步和异步概念(由DZW前端框架引发的百度地图api无法加载问题总结)
首先概念: 在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去:异步是指进程不需要一直等下去,而是继续 ...
- 在Vue框架中使用百度地图
1.首先在index.html中引入百度地图 <script type="text/javascript" src="http://api.map.baidu.co ...
- 百度地图用ip获取当前位置的经纬度(高精度)
步骤比较简单先上百度地图API官网,申请一个应用AK(访问凭据):查看一下高进度定位的API,看看是否都符合要求下面直接上代码 /** * 根据ip获取地理坐标 * @param ip * @retu ...
- 百度地图在web中的使用(一)
百度地图在web中的使用(js) 背景:在公司做一个地理位置的自定义字段,需要用到地图来获取经纬度和地址,在这选择了百度地图 准备工作 注册百度地图开发者,创建应用获取key http://lbsyu ...
- React中使用百度地图API
今天我们来搞一搞如何在React中使用百度地图API好吧,最近忙的头皮发麻,感觉身体被掏空,所以很久都没来写博客了,但今天我一定要来一篇好吧 话不多说,我们直接开始好吧 特别注意:该React项目是用 ...
- react项目结合echarts,百度地图实现热力图
一.最近在一个react项目(antd pro)中需要展示一个热力地图.需求是: 1.热力地图可缩放: 2.鼠标点击可以展示该点地理坐标,及热力值. 3.初始化时候自适应展示所有的热力点. 4.展示热 ...
- 【重点突破】—— 百度地图在React单页面应用中的使用
前言:百度地图是网页中使用地图的常用第三方工具,这里结合React项目中学到的应用场景总结一些使用要点. 一.在网页中嵌入百度地图 搜百度地图开放平台,注册百度开发者账号 控制台:查看应用.创建应用( ...
随机推荐
- windows中执行celery beat任务
由于最新的celery4.2不支持windows系统,因此按照网上的建议安装了3.1.25版.按照官网的说明使用 app.conf.beat_schedule = { 'add-every-30-se ...
- @Html.EditorFor() 用法
@Html.EditorFor()返回一个由表达式表示的对象中的每个属性所对应的input元素,主要是针对强类型,一般这种方式用得多些a.@Html.EditorFor(mode=>mode.N ...
- GUI的最终选择Tkinter模块练习篇
一.Canvas画布练习 1)简单的绘制图框 from tkinter import * # 构建一个窗口 tk = Tk() # 画布 canvas= Canvas(tk,width=,height ...
- java学习第四周
这是暑假第四周,这周我继续学习了Java的基础知识. 了解到Java的类继承,学习到Java的接口的相关知识Java的每一个类都有且仅有一个直接父类,没有多重继承,但是接口可以继承多个,如果把接口看做 ...
- php 制作验证码不显示的问题
php制作验证码的代码,这里就不多说了,网上有很多的,这里说一些可能遇到的问题. 1. 首先是检查自己的php.ini文件,是否支持gd库. 2.保证代码没有出问题. 3.检查字体文件路径是否正确. ...
- java常用设计模式十二:命令模式
一.概述 定义:命令(Command)模式又叫作动作(Action)模式或事务(Transaction)模式,是一种对象的行为模式.将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对 ...
- 安卓 build/core/Makefile 以及main.mk
android make 系统总共分为四层 arch board device product 在各个字android.mk文件中引用的定义都存放在./build/core/下!比如android.m ...
- 学以致用十一-----centos7.2+python3+YouCompleteMe走过的坑
目的,安装YouCompleteMe 插件 参考的资料 https://blog.csdn.net/zs376957686/article/details/77833953 https://www.c ...
- ejb servlet demo
官方文档: http://docs.oracle.com/javaee/6/tutorial/doc/gijre.html package converter.ejb; import java.mat ...
- bash获得脚本当前路径
#!/bin/bashCMD_PATH=`dirname $0`echo "current cmd path:$CMD_PATH"cd $CMD_PATHecho $PWDecho ...