react-native-android-map
Version:
Baidu Map SDK modules and view for React Native(Android), support react native 0.40+.
100 lines (95 loc) • 2.33 kB
JavaScript
import {
requireNativeComponent,
NativeModules,
Platform,
DeviceEventEmitter
} from 'react-native';
import React, {
Component,
PropTypes
} from 'react';
const _module = NativeModules.BaiduGeolocationModule;
export default {
geocode(city, addr) {
return new Promise((resolve, reject) => {
try {
_module.geocode(city, addr);
}
catch (e) {
reject(e);
return;
}
DeviceEventEmitter.once('onGetGeoCodeResult', resp => {
resolve(resp);
});
});
},
reverseGeoCode(lat, lng) {
return new Promise((resolve, reject) => {
try {
_module.reverseGeoCode(lat, lng);
}
catch (e) {
reject(e);
return;
}
DeviceEventEmitter.once('onGetReverseGeoCodeResult', resp => {
resolve(resp);
});
});
},
reverseGeoCodeGPS(lat, lng) {
return new Promise((resolve, reject) => {
try {
_module.reverseGeoCodeGPS(lat, lng);
}
catch (e) {
reject(e);
return;
}
DeviceEventEmitter.once('onGetReverseGeoCodeResult', resp => {
resp.latitude = parseFloat(resp.latitude);
resp.longitude = parseFloat(resp.longitude);
resolve(resp);
});
});
},
getCurrentPosition() {
if (Platform.OS == 'ios') {
return new Promise((resolve, reject) => {
navigator.geolocation.getCurrentPosition((position) => {
try {
_module.reverseGeoCodeGPS(position.coords.latitude, position.coords.longitude);
}
catch (e) {
reject(e);
return;
}
DeviceEventEmitter.once('onGetReverseGeoCodeResult', resp => {
resp.latitude = parseFloat(resp.latitude);
resp.longitude = parseFloat(resp.longitude);
resolve(resp);
});
}, (error) => {
reject(error);
}, {
enableHighAccuracy: true,
timeout: 20000,
maximumAge: 1000
});
});
}
return new Promise((resolve, reject) => {
try {
_module.getCurrentPosition();
}
catch (e) {
reject(e);
return;
}
DeviceEventEmitter.once('onGetCurrentLocationPosition', resp => {
resolve(resp);
});
});
}
};