加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

React自己写的一个地图小组件

发布时间:2020-12-15 05:30:20 所属栏目:百科 来源:网络整理
导读:由于今天比较闲,就玩了玩react,然后就封装了一个地图的组件,当然功能比较简单,因为就是随手写的小东西,但是由于引用了百度API和bee-mobile,所以用起来可能要薛微麻烦一点点,但是我保证,只是一点点而已。 由于之前发了一次,说字数太少从主页移出了,

由于今天比较闲,就玩了玩react,然后就封装了一个地图的组件,当然功能比较简单,因为就是随手写的小东西,但是由于引用了百度API和bee-mobile,所以用起来可能要薛微麻烦一点点,但是我保证,只是一点点而已。

由于之前发了一次,说字数太少从主页移出了,作为一个铁头娃,那我肯定得重写啊。前一次发的不够细致,这次就薛微细一点好吧,

由于,由于,鱿鱼,说的我都饿了。不说了进入正题好吧,

首先说说

主要使用了bee-mobile的

  1.Notification主要是来实现点击后的弹出功能,

  2.Button是按钮,

  3.Icon是图标

多说无益,直接上效果图好吧

      

  1.基础三步走              2.我直接把组件的源码放上来,需要的直接拉下去随便找地方放下,在需要使用的组件里直接引用即可,注意:使用前请阅读最下方的使用说明    源码我加了一小部分注释,很容易就能看懂

组件源代码:

{}{}const NewaddressButton = styled(Button) width:$</span>{<span style="color: #ff0000"&gt;props=>props.width||"100%"</span>}<span style="color: #800000"&gt;; height:$</span>{<span style="color: #ff0000"&gt;props=>props.height||"200px"</span>}<span style="color: #800000"&gt;; background-color:$</span>{<span style="color: #ff0000"&gt;props=>props.sideBgColor||"white"</span>}<span style="color: #800000"&gt;; overflow:hidden;

const Address = styled.div width:100%; height:$</span>{<span style="color: #ff0000"&gt;props=>props.height||"200px" </span>}<span style="color: #800000"&gt; !important; .BMap_stdMpCtrl</span>{<span style="color: #ff0000"&gt; position</span>:<span style="color: #0000ff"&gt;fixed !important</span>;<span style="color: #ff0000"&gt; right</span>:<span style="color: #0000ff"&gt;0</span>;<span style="color: #ff0000"&gt; top</span>:<span style="color: #0000ff"&gt;.5rem</span>; }<span style="color: #800000"&gt;

const Pudian = styled.div width:100%; height:50px;
const Addresstop = styled.div`
position:fixed;
z-index:999;
height:.5rem;
width:100%;
background-color:rgb(53,218,132);
padding-top:.05rem;
padding-left:.05rem;
display:flex;
color:white;
line-height:.4rem;
.address_goback{<span style="color: #ff0000">
button{
background-color:<span style="color: #0000ff">rgb(43,208,130)
}<span style="color: #800000">

    }
    .addressInfo</span>{<span style="color: #ff0000"&gt;
            padding-left</span>:<span style="color: #0000ff"&gt;.1rem</span>;<span style="color: #ff0000"&gt;
            flex</span>:<span style="color: #0000ff"&gt;1</span>;<span style="color: #ff0000"&gt;
      button{
              width</span>:<span style="color: #0000ff"&gt;95%</span>;<span style="color: #ff0000"&gt;
              background-color</span>:<span style="color: #0000ff"&gt;rgb(43,130)
     </span>}<span style="color: #800000"&gt;
    }

`

class AddressComponent extends Component{<span style="color: #ff0000">
render() {
return(

}
                <div className="addressInfo"&gt;<Button theme="success"&gt;<span>当前地址:</span><span></span>{<span style="color: #ff0000"&gt;this.props.topAddress</span>}<span style="color: #800000"&gt;</span></Button></div>
            </Addresstop>
            <Pudian></Pudian>
            <NewaddressButton </span>{<span style="color: #ff0000"&gt;...this.props</span>}<span style="color: #800000"&gt;>
            <Address className="address" id="address" </span>{<span style="color: #ff0000"&gt;...this.props</span>}<span style="color: #800000"&gt;>
            </Address>
        </NewaddressButton>
        </div>



    )
}
componentDidMount()</span>{<span style="color: #ff0000"&gt;
    var map = new BMap.Map("address"); // 创建Map实例
    //城市优先
    if(this.props.MapCity){
        map.centerAndZoom(this.props.MapCity||"北京",this.props.level||11);
    </span>}<span style="color: #800000"&gt;else</span>{<span style="color: #ff0000"&gt;
         map.centerAndZoom(new BMap.Point(this.props.longitude||116.404,this.props.latitude||39.915),this.props.level||11); // 初始化地图,设置中心点坐标和地图级别
    </span>}<span style="color: #800000"&gt;
    this.props.MapTypeControl&amp;&amp;map.addControl(new BMap.MapTypeControl()); //添加地图类型控件

    this.props.enableScrollWheelZoom&amp;&amp;map.enableScrollWheelZoom();

    if(this.props.zoomControl)</span>{<span style="color: #ff0000"&gt;
    var top_left_navigation = new BMap.NavigationControl();  //左上角,添加默认缩放平移控件
        //添加控件和比例尺
    map.addControl(top_left_navigation);
    </span>}<span style="color: #800000"&gt;

    var _this = this
    var geoc = new BMap.Geocoder(); 
    //获取到点击的API
    map.addEventListener("click",function(e)</span>{<span style="color: #ff0000"&gt;
        var pt = e.point;
        geoc.getLocation(pt,function(rs){
            var addComp = rs.addressComponents;
            console.log(pt)
            _this.props.getAddress(addComp,pt)
            //添加提示信息
            //在当前地图上设置标注
                //创建小狐狸
                map.clearOverlays();

                var myIcon = new BMap.Icon("http</span>:<span style="color: #0000ff"&gt;//lbsyun.baidu.com/jsdemo/img/fox.gif",new BMap.Size(170,157))</span>;<span style="color: #ff0000"&gt;
                var marker2 = new BMap.Marker(pt,{icon</span>:<span style="color: #0000ff"&gt;myIcon</span>}<span style="color: #800000"&gt;);  // 创建标注
                map.addOverlay(marker2);              // 将标注添加到地图中

            Notification.info(</span>{<span style="color: #ff0000"&gt;
                title</span>:<span style="color: #0000ff"&gt; '',message: `已选择:${addComp.province&amp;&amp;addComp.province</span>}<span style="color: #800000"&gt;$</span>{<span style="color: #ff0000"&gt;addComp.city&amp;&amp;"/"+addComp.city</span>}<span style="color: #800000"&gt;$</span>{<span style="color: #ff0000"&gt;addComp.district&amp;&amp;"/"+addComp.district</span>}<span style="color: #800000"&gt;$</span>{<span style="color: #ff0000"&gt;addComp.street&amp;&amp;"/"+addComp.street</span>}<span style="color: #800000"&gt;`,},)
        });
    })}

}
export default AddressComponent

组件使用指南:

  1.引入组件

  2.组件使用参数说明

    

{}         topButtonEvent = {}          height="500px"                   sideBgColor="lightBlue"           level="11" MapCity="上海" longitude ="116.404" latitude="39.915" MapTypeControl={} enableScrollWheelZoom={} zoomControl={}{{               console.log(LongitudeAndLatitude) }

到这里已经可以愉快的使用了,按照步骤走应该是可以正常运行的,假设有问题可以评论我,特别注意一下,该组件只是随手写着玩的,并不完善,可以当Demo来使用参考

写的很不严谨,单纯是为了实现功能而写的代码,许多判断的地方都没有写的非常严谨,请各位大佬不要太较真,瞅瞅就好,如果有问题请指出,我出一瓶红牛买你的指点好吧,啥,一瓶红牛不够?那一场正规保健可以不,正规的啊,别想歪了,我不是那种人,毕竟快到年底了,安全为重。哈哈哈。

,文笔非常好的大腿,我已经验证过了,人也很有意思,可以说是很棒了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读