在React项目中使用百度地图API
在React项目中使用百度地图API时出现了 “BMapGL is not defined” 错误。
以下为百度地图给出的快速入门:
首先,需要在你的index.html
模板页面头部加载百度地图JavaScript API
代码,密钥可去百度地图开放平台官网申请。
<script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=您的密钥"></script>
然后,使用npm
方式安装react
组件库,然后通过es
模块加载
npm install react-bmapgl --save
代码如下:
import React from 'react';
import ReactDOM from 'react-dom';
import {Map, Marker, NavigationControl, InfoWindow} from 'react-bmapgl';
class App extends React.Component {
render() {
return <Map center={{lng: 116.402544, lat: 39.928216}} zoom="11">
<Marker position={{lng: 116.402544, lat: 39.928216}} />
<NavigationControl />
<InfoWindow position={{lng: 116.402544, lat: 39.928216}} text="内容" title="标题"/>
</Map>
}
}
export default App;
异步加载
按照官方的异步加载方法修改代码。使用
MapApiLoaderHOC
高阶组件,实现异步加载的方式。
import React from 'react';
import ReactDOM from 'react-dom';
import {Map, Marker, NavigationControl, InfoWindow} from 'react-bmapgl';
class App extends React.Component {
render() {
return <Map center={{lng: 116.402544, lat: 39.928216}} zoom="11">
<Marker position={{lng: 116.402544, lat: 39.928216}} />
<NavigationControl />
<InfoWindow position={{lng: 116.402544, lat: 39.928216}} text="内容" title="标题"/>
</Map>
}
}
export default MapApiLoaderHOC({ak: '您的密钥'})(App);