在React中使用百度地图api的一系列demo

栏目: 服务器 · 发布时间: 5年前

内容简介:因为之前工作的关系,会频繁的使用各种地图,例如百度地图,高德地图,谷歌地图等。所以想整理一下,写一个在react中根据不同的需求使用地图api的各种demo集合,所以先以百度地图为例。我们会看见上图,然后我们在此基础上进行改造。

因为之前工作的关系,会频繁的使用各种地图,例如百度地图,高德地图,谷歌地图等。所以想整理一下,写一个在react中根据不同的需求使用地图api的各种demo集合,所以先以百度地图为例。

本文将根据官网显示的demo列表,一个一个实现在react中的使用方法。文章内容较长,将会持续更新,同时也会在官网提供的列子上根据实际使用加入不同的使用组合。

技术

  • React -----> create-react-app 一个facebook官方开发的快速搭建react的脚手架。
  • 百度地图JavaScript API ------->在web端使用的百度地图api
  • antd design----->开箱即用的高质量 React 组件。

(一)前端搭建

1.用facebook官方开发的create-react-app 脚手架搭建一个react前端框架。

(1)全局安装 create-react-app

npm install -g create-react-app
复制代码

(2)创建项目

create-react-app react-map
npm run eject //可省略,只为了看配置 config
npm start
复制代码

自此项目目录如下图

在React中使用百度地图api的一系列demo

(3) 运行

npm start

在React中使用百度地图api的一系列demo
打开 localhost:3000

我们会看见上图,然后我们在此基础上进行改造。

(4)安装依赖

npm install antd react-router --save

为了使用antd 的时候能够按需加载,先配置 babel-plugin-import 这是一个用于按需加载组件代码和样式的 babel 插件

npm install babel-plugin-import --save-dev
复制代码

然后在package.json中加入配置

·····省略其他
   "babel": {
    "presets": [
      "react-app"
    ],
    "plugins": [
      [
        "import",
        {
          "libraryName": "antd",
          "style": true
        }
      ]
    ]
  },
  ·····省略其他
复制代码

使用装饰器

npm install --saveDev babel-plugin-transform-decorators-legacy
复制代码
然后在package.json中加入配置
·····省略其他
   "babel": {
    "presets": [
      "react-app"
    ],
    "plugins": [
    "transform-decorators-legacy",
      [
        "import",
        {
          "libraryName": "antd",
          "style": true
        }
      ]
    ]
  },
  ·····省略其他
复制代码

基础页面布局

在React中使用百度地图api的一系列demo

基础工作做好后,下面开始正式的地图使用

(1)获取百度地图api,获取方式网上有很多教程,就不介绍了,如果不想获取的,可以先用我的key 2NZa1O1V3BHmsDlX9fdomGaO3S5b1AEo (2) 在public/index.html引入

<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");
复制代码

会报错

在React中使用百度地图api的一系列demo

有两种解决方式 可以参考 www.cnblogs.com/softidea/p/… 这个就看你的选择了.

本文选择的是第二种 在config/webpack.config.dev.js中

module.exports = {
 externals:{
    'BMap':'BMap',
    },
}
复制代码

然后在你要使用的jsx中加入

import BMap from 'BMap';
复制代码

成功!!!!

地图使用demo展示

本文将根据官网显示的demo列表,一个一个实现在react中的使用方法。文章内容较长,将会持续更新,同时也会在官网提供的列子上根据实际使用加入不同的使用组合。

在React中使用百度地图api的一系列demo

第一部分 地图实力

在官网中地图实力是以下内容

在React中使用百度地图api的一系列demo

此时我的项目结构如下:

在React中使用百度地图api的一系列demo

地图展示

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 报错了

在React中使用百度地图api的一系列demo
BMAP_NORMAL_MAP,'BMAP_HYBRID_MAP' is not defined

但是打印console.log(window)后发现window里面居然有,所以可以专门用一个js保存这些数据。 在common/BMAP_DATA.js中指定这些参数

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";
复制代码

搞定!

在React中使用百度地图api的一系列demo

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

技术赋权

技术赋权

郑永年 / 邱道隆 / 东方出版社 / 2014-4-1 / CNY 45.00

在本书中,作者对中国互联网的历史做了一次突破性的研究,细致又全面地观察了中国互联网对于国家和社会的影响,发现互联网给中国的社会—政治变革带来了新的动力。政府权力和社会力量在以互联网为媒介的公共领域中转换。 从大量的数据梳理和事实分析中,作者得出了四重的研究结论。首先,互联网给政府和社会都增加了权力。互联网在促进政治自由化中扮演了重要的角色,使政府更加开放、透明和负责任。第二,互联网产生了大量......一起来看看 《技术赋权》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码