本次更新javascript
由于以前工做的关系,会频繁的使用各类地图,例如百度地图,高德地图,谷歌地图等。因此想整理一下,写一个在react中根据不一样的需求使用地图api的各类demo集合,因此先以百度地图为例。php
本文将根据官网显示的demo列表,一个一个实如今react中的使用方法。文章内容较长,将会持续更新,同时也会在官网提供的列子上根据实际使用加入不一样的使用组合。html
npm install -g create-react-app
复制代码
create-react-app react-map
npm run eject //可省略,只为了看配置 config
npm start
复制代码
npm start
前端
npm install antd react-router --save
java
为了使用antd 的时候可以按需加载,先配置 babel-plugin-import 这是一个用于按需加载组件代码和样式的 babel 插件react
npm install babel-plugin-import --save-dev
复制代码
而后在package.json中加入配置webpack
·····省略其余
"babel": {
"presets": [
"react-app"
],
"plugins": [
[
"import",
{
"libraryName": "antd",
"style": true
}
]
]
},
·····省略其余
复制代码
使用装饰器git
npm install --saveDev babel-plugin-transform-decorators-legacy
复制代码
而后在package.json中加入配置
·····省略其余
"babel": {
"presets": [
"react-app"
],
"plugins": [
"transform-decorators-legacy",
[
"import",
{
"libraryName": "antd",
"style": true
}
]
]
},
·····省略其余
复制代码
基础工做作好后,下面开始正式的地图使用github
(1)获取百度地图api,获取方式网上有不少教程,就不介绍了,若是不想获取的,能够先用个人key 2NZa1O1V3BHmsDlX9fdomGaO3S5b1AEo (2) 在public/index.html引入web
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=2NZa1O1V3BHmsDlX9fdomGaO3S5b1AEo"></script>
复制代码
(3)react使用BMap
重点 重点!!!! 若是直接就使用
let map =new BMap.Map("allmap");
复制代码
会报错
有两种解决方式 能够参考 www.cnblogs.com/softidea/p/… 这个就看你的选择了.
本文选择的是第二种 在config/webpack.config.dev.js中
module.exports = {
externals:{
'BMap':'BMap',
},
}
复制代码
而后在你要使用的jsx中加入
import BMap from 'BMap';
复制代码
成功!!!!
本文将根据官网显示的demo列表,一个一个实如今react中的使用方法。文章内容较长,将会持续更新,同时也会在官网提供的列子上根据实际使用加入不一样的使用组合。
在官网中地图实力是如下内容
src/components/bmap/mapSample/BasicMapView.jsx
(1)导入BMap
import BMap from 'BMap';
复制代码
(2)地图展现 如今render里面制定地图id,height,width等信息
<div style={{width:"100%",height:"100%"}} id={"allmap"}></div>
复制代码
而后在componentDidMount中对地图进行绑定id,复制粘贴官网例子
componentDidMount(){
let map =new BMap.Map("allmap");
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 初始化地图,设置中心点坐标和地图级别
//添加地图类型控件
map.addControl(new BMap.MapTypeControl({
mapTypes:[
BMAP_HYBRID_MAP,//混合地图
BMAP_NORMAL_MAP//地图
]}));
map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
}
复制代码
此时发现emmmmm 报错了
export const BMAP_NORMAL_MAP =window.BMAP_NORMAL_MAP;
export const BMAP_HYBRID_MAP = window.BMAP_HYBRID_MAP;
复制代码
而后在src/components/bmap/mapSample/BasicMapView.jsx中导入
import {BMAP_HYBRID_MAP, BMAP_NORMAL_MAP} from "../../../common/BMAP_DATA";
复制代码
搞定!