### 当前高德地图的react版本
+ 饿了么的react-amap项目地址为:ElemeFE/react-amap
+ 新的react-amap-next项目地址(windsome/react-amap-next),采用新方案,极少代码
### 当前react版本amap的开源库react-amap介绍
+ 使用方法
```
import React from 'react';
import ReactDOM from 'react-dom';
import { Map, Polygon } from 'react-amap';
ReactDOM.render(
,
document.querySelector('#app')
)
```
使用过程中需要注意,amapkey和version需要作为`Map`属性传入,组件内部实现了高德地图相关js文件的加载:(https://webapi.amap.com/maps?v=1.4.8&key=您申请的key值).
组件的使用主要在`events`属性中,`events`属性是一个事件处理函数集合,组件相关的事件均可在`events`中处理,但Map中有一个特殊事件,Map组件创建完后会触发`created`事件,在这个事件处理函数中可以做一些初始化,另外,其他的地图上触发事件如`click`等均可放到`events`中传入.如下例子:
```
events = {
created: map => {
this.setState({ mapInstance: map });
window.AMap.plugin('AMap.Geocoder', () => {
let geocoder = new window.AMap.Geocoder({
//city: "010"//城市,默认:“全国”
});
this.setState({ geocoder });
});
},
click: mapevt => {
//console.log('mapevt:', mapevt);
let gps = mapevt.lnglat;
this.getAddressByGps(gps)
.then(retAddr => this.setState({ ...retAddr }))
.catch(error => {
console.log('error!', error);
});
this.setState({ gps });
},
};
```
`created`事件比较特殊,可以在此事件中初始化一些非可视化插件,比如`AMap.Geocoder`,`AMap.Geolocation`等,如上例,初始化了`AMap.Geocoder` ,并且塞到state中,以后可以被调用.注意调用时最好判断`this.state.geocoder`是否为空.
其他详细使用方法参照官网.
### react-amap使用中的注意事项及使用体验
1. `created`是加载高德js完毕触发的事件,参数为map实例,可以之后调用map的方法,在`created`中`window.AMap`已经加载完成,可以调用`AMap`相关子类及方法等,注意map是Map类的实例.
2. 每次调用高德地图都在`