一 获取高德地图开放平台的Key
???????首先登陆高德地图开放平台: ???????https://console.amap.com/ ???????然后注册登陆啥的就不说了。 进入控制台选项,创建两个应用: ???????这两个应用一个是安卓使用的,一个是web使用的,即再说明白些,一个是插件自己使用的,能获取经纬度信息,而另一个是我们使用Ajax技术,例如Axios,根据经纬度信息去获取详细位置信息时要使用的。
每个应用里面创建一个Key,直接点击应用最右边的【添加】即可,创建的Android的Key: 需要注意的是,获取SHA1时,ReactNative项目有些不一样,看我执行命令的位置: 其它的完全遵循官网即可。 2 创建的Web的Key(在另一个应用里面):
二 安装依赖
npm install react-native-amap-geolocation --save or yarn add react-native-amap-geolocation
三 配置
ReactNative 0.6X以上都可以自动配置, 只需要执行: 运行 react-native link react-native-amap-geolocation 如果执行时,报错说react-native 是不识别的命令,就安装一下: 【 npm install -g react-native-cli 】
四 添加权限
/android/app/src/main/MainApplication.xml 文件中添加权限列表,不添加获取了相关权限也没用
<manifest>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>
五 获取位置的Js代码
import { PermissionsAndroid, Platform} from 'react-native';
import {init, Geolocation} from "react-native-amap-geolocation"
import axios from "axios";
class Geo {
async initGeo(){
if(Platform.OS === "android"){
const grantd = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION);
console.log("权限获取的咋样了???",grantd)
}
await init({
ios:"50c3346366041e9807587906892e1f9f",
android:"50c3346366041e9807587906892e1f9f"
});
return Promise.resolve();
}
async getCurrentPosition(){
return new Promise((resolve, reject) => {
Geolocation.getCurrentPosition(({coords}) => {
resolve(coords);
}, reject)
})
}
async getCityByLocation(){
await this.initGeo()
const {longitude, latitude} = await this.getCurrentPosition()
const res = await axios.get("https://restapi.amap.com/v3/geocode/regeo", {
params:{location: `${longitude}, ${latitude}`, key: "353ff06479c95e207961d9cddcc0e96e"}
})
return Promise.resolve(res.data);
}
}
export default new Geo();
六 简单使用示例
async componentDidMount(){
const res = await Geo.getCityByLocation()
console.log("xxcxcxcxcxcxcxcxcxx",res)
}
|