React 里google 高德地图组件的使用

首先是地图组建的使用流程

1.注册Google、高德接口调用的key  key是官方api提供的访问权限 各类型的Key不一样

2.引入Google、高德的js库  在html的主页面 引入script js文件路径要加入key的值。

3.配置地图参数,创建地图。 谷歌 高德的初始化稍有不同

传统html页面的地图初始化 官方有文档 

在ReactJs组件中,一般页面原始初始化放在componentDidMount()函数中,初始化数据getInitialState中

getInitialState() {

    return {

        googleConfig: {

            center: { lat: 42.872, lng: 3.644 },

            zoom: 3

        },

        gaodeConfig:{

            resizeEnable: true,

            zoom:11,

            center: [116.397428, 39.90923]

        }

    }

},

componentDidMount() {

    new window.google.maps.Map(

        this.refs.map1,

        this.state.googleConfig

        );

new window.AMap.Map(

        this.refs.map2,

        this.state.gaodeConfig

        );

},

这里需要注意的是 react引入官方js库后 我们的对象创建都需要通过window里引入 google AMap(高德)来创建对象 这事react中使用的不同之处

react中我们不能使用getElementById,而是采用refs来渲染页面

render() {

return (

<div className="demo"    >  

        <div className="google" ref="map1" />

        <div className="gaode" ref="map2" />

</div>

)}

第一步引入地图 先介绍到这里 项目中可能 会用到的拓展接口 稍后api调用 圈poi范围 添加点击事件 定位等功能再做添加


1.API  点击地图获取点击位置的经纬度

window.google.maps.event.addListener(map_google,'click', function(e) {

alert(e.latLng.lng() + ',' + e.latLng.lat())

})

map_gaode.on('click', function(e) {

alert(e.lnglat.getLng() + ',' + e.lnglat.getLat());

});

谷歌 高德下点击地图获取经纬度的实现 谷歌必须通过maps对象的event对象管理里添加监听事件

而高德 可直接在地图对象上绑定click事件


poi围栏demo实现


1.点击地图添加标记点

map_google.addListener('click', function(e) {

var temp = that.state.positions;

temp.push(e.latLng);

marker_google = new window.google.maps.Marker({

position: e.latLng,

map: map_google

});

markers_google.push(marker_google);

that.setState({

positions:temp

})

});

map_gaode.on('click', function(e) {

var temp = that.state.positions;

temp.push([e.lnglat.getLng() , e.lnglat.getLat()]);

marker_gaode = new window.AMap.Marker({

map: map_gaode,

position:[e.lnglat.getLng() , e.lnglat.getLat()]

});

markers_gaode.push(marker_gaode);

that.setState({

positions:temp

})

});

2.按确认形成多边形围栏

if(key == "gaode"){

if(!polygon_gaode){

var polygonArr = new Array();//多边形覆盖物节点坐标数组

polygonArr = this.state.positions;

polygon_gaode = new window.AMap.Polygon({

path: polygonArr,//设置多边形边界路径

strokeColor: "#FF33FF", //线颜色

strokeOpacity: 0.2, //线透明度

strokeWeight: 3,    //线宽

fillColor: "#1791fc", //填充色

fillOpacity: 0.35//填充透明度

});

polygon_gaode.setMap(map_gaode);

this.setState({

positions:[]

})

}

}else if(key == "google"){

if(!polygon_google){

var polygonArr = new Array();//多边形覆盖物节点坐标数组

polygonArr = this.state.positions;

polygon_google = new window.google.maps.Polygon({

paths: polygonArr,

strokeColor: '#FF0000',

strokeOpacity: 0.8,

strokeWeight: 2,

fillColor: '#FF0000',

fillOpacity: 0.35

});

polygon_google.setMap(map_google);

}

this.setState({

positions:[]

})

}

3.清除标记和多边形围栏

if(key == "gaode"){

map_gaode.remove(markers_gaode);

if(polygon_gaode){

polygon_gaode.setMap(null)

polygon_gaode = null;

}

}else if(key == "google"){

for (var i = 0; i < markers_google.length; i++) {

markers_google[i].setMap(null);

}

markers_google = [];

if(polygon_google){

polygon_google.setMap(null)

polygon_google = null;

}

}

this.setState({

positions:[]

})

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,712评论 0 33
  • 两个室友晚上在水房洗脸遇见了。 你晚上吃了什么? 没吃什么,不想吃…… 啊,那你不饿吗?现在? 恩,不饿, 那你还...
    梁家_大少爷阅读 302评论 0 0
  • 期待的明天是像今天一样精彩的一天。
    芜劣阅读 237评论 0 0
  • ~~其实英文的代码对于中文输入,尤其是手机中文输入来说很不友好~~ *但是也没关系啦* **反正闲着也是闲着** ...
    抹茶流苏阅读 229评论 0 0
  • 这是一个关于我的奇葩舍友的故事完整故事请查看目录 龟仙人尿法虽然有效,但令我跟阿开苦不堪言。 如果尿量较少还好,但...
    孤叶南飞阅读 20,288评论 4 5