UNPKG

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
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); }); }); } };