react 调用百度地图的坑

简介: react 调用百度地图的坑

1.引入百度地图

我使用的antd pro 的框架进行的开发,所以只需要在src/pages/document.ejs加入以下代码即可

<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=Imejyag6D5IPg4lOfu0LiDUWBGh2SNmc"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/Heatmap/2.0/src/Heatmap_min.js"></script>

2.调用前判断是否加载成功

 render(){
    let checkNet = false
    if( window.BMap){
      checkNet = true
    }
    return (
      <PageLayout>
        {checkNet?(  <MyMap ></MyMap>):(<a>网路连接中断"< /a>)}
      </PageLayout>
    )
  }

3.地图组件

import React, {Component} from 'react';




import styles from './index.less'
import {connect} from "dva";

@connect(({ apdistribution }) => ({apdistribution}))
class MyMap extends Component{
    constructor(props) {
        super(props);

      }

  componentDidMount() {
    this.renderChart();
    }


  componentDidUpdate(prevProps) {
    const update = this.compareProps(prevProps, this.props);
    /* 再优化 */
    if(update){
      this.reRenderChart(this.props)
    }
  }
  //   比较前后参数是否相同
  compareProps = (oldProps={}, newProps={}) =>{
    const oldPropsString = JSON.stringify(oldProps);
    const newPropsString = JSON.stringify(newProps);
    return ! (oldPropsString === newPropsString);
  };


  //   第二次渲染百度地图
  reRenderChart = props =>{
    const{apdistribution:{aps}} = this.props;
    this.makeMap(aps)
  };
  //   第一次渲染百度地图
  renderChart = () =>{
    const{apdistribution:{aps}} = this.props;
    this.makeMap(aps)
  };


    makeMap=(aps)=>{
      if(aps!== undefined) {
        const map = new BMap.Map("myMap");

        map.setMapType(BMAP_HYBRID_MAP)
        map.addControl(new BMap.MapTypeControl({
            mapTypes: [
              BMAP_HYBRID_MAP,
              BMAP_NORMAL_MAP,

            ]
          }
        ));
        const point = new BMap.Point(120.487295, 36.126442);
        map.centerAndZoom(point, 15);
        map.enableScrollWheelZoom(true);//开启鼠标滚轮缩放
       // 编写自定义函数,创建标注

        function addMarker(point,ap) {
          const marker = new BMap.Marker(point);
          map.addOverlay(marker);
          marker.addEventListener("click", function (e) {
            alert("您点击了标注"+ap.lys)
          })
        }
        for (let i = 0; i < aps.length; i++) {
         const jwd=aps[i].jwd.split(',');
         const point1 = new BMap.Point(parseFloat(jwd[0]),parseFloat(jwd[1]));
          addMarker(point1,aps[i]);
        }


    }
    }

  render(){

    const{apdistribution:{aps}} = this.props;
      console.log(aps);
    if(this.map){
      this.makeMap(aps);
    }

    return (
        <div className={styles.myPage}>
          <div id='myMap' className={styles.map}></div>

我的地图
        </div>
    )
  }
}
export default MyMap;
相关文章
|
5月前
|
前端开发 定位技术 API
react+typescript接入百度地图
react+typescript接入百度地图
127 0
|
前端开发 定位技术
react中使用百度地图报错:‘BMapGL‘ is not defined no-undef解决方法
react中使用百度地图报错:‘BMapGL‘ is not defined no-undef解决方法
|
前端开发 开发工具 Android开发
react native 百度统计 ios端集成
react native 百度统计Android端的集成可参考:https://www.jianshu.com/p/cc354c6a81d5 希望能够让同学们少走些弯路。
2221 0
|
前端开发 开发工具 Android开发
react native 百度统计 Android 端集成
百度统计RN两端已经集成了,老板说百度统计统计的数据太垃圾了,业界都不用,我只想说一句呵呵。 百度再不准确的数据 免费给你用,你还喷数据垃圾,这就是我们玩游戏时的小喷子,小学生,照顾小学生,未成年我们当然是听他的 让换友盟,ok给你换。
2420 0
|
JavaScript 前端开发 API
【react】当react框架遇上百度地图
百度地图官方文档的使用指导是这样说的:在页面中引入,然后就可以使用脚本中引入的BMap对象去调用各种API了   我遇到的问题 我在入口文件——index.html引入上面那段脚本后,而在另外一个JS文件里访问BMap时候报错了,提示BMap is not defined,   我解决问题的思路 1.
1547 0
|
JavaScript 前端开发 API
当react框架遇上百度地图
百度地图官方文档的使用指导是这样说的:在页面中引入,然后就可以使用脚本中引入的BMap对象去调用各种API了   我遇到的问题: 我在入口文件——index.html引入上面那段脚本后,而在另外一个JS文件里访问BMap时候报错了,提示BMap is not defined,   我解决问题的思路: 1.
2356 0
|
5月前
|
设计模式 前端开发 数据可视化
【第4期】一文了解React UI 组件库
【第4期】一文了解React UI 组件库
314 0
|
5月前
|
存储 前端开发 JavaScript
【第34期】一文学会React组件传值
【第34期】一文学会React组件传值
67 0
|
5月前
|
前端开发
【第31期】一文学会用React Hooks组件编写组件
【第31期】一文学会用React Hooks组件编写组件
68 0
|
5月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
103 0
下一篇
无影云桌面