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

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

内容简介:因为之前工作的关系,会频繁的使用各种地图,例如百度地图,高德地图,谷歌地图等。所以想整理一下,写一个在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

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

查看所有标签

猜你喜欢:

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

Web Applications (Hacking Exposed)

Web Applications (Hacking Exposed)

Joel Scambray、Mike Shema / McGraw-Hill Osborne Media / 2002-06-19 / USD 49.99

Get in-depth coverage of Web application platforms and their vulnerabilities, presented the same popular format as the international bestseller, Hacking Exposed. Covering hacking scenarios across diff......一起来看看 《Web Applications (Hacking Exposed)》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具