在react中使用百度地图

在react中使用百度地图

在react中使用百度地图有三种方式

1:首先使用window保存BMap

 	1): 在创建好的react项目中的public目录下的index.html中引入
 	
    
    2):然后在src中新建BaiduMap中加入你需要的百度地图demo
    	    componentDidMount () {
		       const {BMap,BMAP_STATUS_SUCCESS,BMAP_ANCHOR_TOP_LEFT}=window;
		        var map = new BMap.Map("allmap");
		        var point = new BMap.Point(116.404, 39.915);
		        map.centerAndZoom(point, 14);
		        map.enableScrollWheelZoom();
		        map.enableInertialDragging();
		        map.enableContinuousZoom();
		        var size = new BMap.Size(10, 20);
		        map.addControl(new BMap.CityListControl({
		            anchor: BMAP_ANCHOR_TOP_LEFT,
		            offset: size,
		        }));
		        var geolocation = new BMap.Geolocation();
		        geolocation.getCurrentPosition(function(r){
		            if(this.getStatus() == BMAP_STATUS_SUCCESS){
		                var mk = new BMap.Marker(r.point);
		                map.addOverlay(mk);
		                map.panTo(r.point);
		                alert('您的位置:'+r.point.lng+','+r.point.lat);
		            }
		            else {
		                alert('failed'+this.getStatus());
		            }        
		        },{enableHighAccuracy: true})
		    }
		    render(){
		        return (
		            
) } 3):在你的入口文件index.js中使用 ReactDOM.render(, document.getElementById('root'));

2:通过webpack的externals加载BMap使它可以通过require或import引入,在node_modules中react-scripts的webpack.config.dev.js中添加

		module.exports = {
			/*此处省略了entry,output,modules等配置*/
			  externals:{
			    'BMap':'BMap'
			  },
		}
	例子:
		import React from 'react'
		import ReactDOM from 'react-dom'
		import BMap from 'BMap'
		class BaiduMap extends React.Component {
		componentDidMount () {
		  var map = new BMap.Map("allmap"); // 创建Map实例
		  map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 初始化地图,设置中心点坐标和地图级别
		  map.addControl(new BMap.MapTypeControl()); //添加地图类型控件
		  map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的
		  map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
		}
		 
		render () {
		  return (
		    
) } } ReactDOM.render( , document.getElementById('root') )

3:使用react-bmap

 - 1:首先在react项目中,npm install react-bmap --save
 - 2:在react的项目的public目录中index.html中加入
 	 
 - 3:例子
 	 import React from 'react'
   import {Map, Marker, NavigationControl, InfoWindow} from 'react-bmap'
   class BaiduMap extends React.Component{
   
	    render(){
	        return (
	            
) } }

第一种方式和第三种方式亲测有效,但是第二种在react项目中找不到webpack.config.dev.js,然后去网上找方法的时候,使用npm run eject之后,在config中还是没有,所以第二种方法我自己测试失败,有好的解决方案,可以评论,看见回复

你可能感兴趣的:(react,百度地图)