React-native Android地理定位
我需要在React-native
Android上检测用户的地理位置,但当前的实现仅支持iOS.我没有在任何地方找到任何教程或相关问题.
我试图为此创建自己的Android原生组件.我已经尝试使用模拟器(通过命令行设置一些坐标)和手机,但操作栏中没有gps图标,并且反应回调中没有数据. 我正在尝试立即获取最后一个已知位置,我也正在设置事件监听器以进行更新. public class GeoLocation extends ReactContextBaseJavaModule implements GoogleApiClient.ConnectionCallbacks,GoogleApiClient.OnConnectionFailedListener { protected static final String TAG = "GeoLocation"; protected GoogleApiClient mGoogleApiClient; protected Location mLastLocation; public GeoLocation(ReactApplicationContext reactContext) { super(reactContext); buildGoogleApiClient(); } @Override public String getName() { return "GeoLocation"; } protected synchronized void buildGoogleApiClient() { mGoogleApiClient = new GoogleApiClient.Builder(getReactApplicationContext()) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); mGoogleApiClient.connect(); } @Override public void onConnected(Bundle connectionHint) { mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); //WritableMap params = Arguments.createMap(); //Can I use ConcurrentHashMap instead of WritableMap? ConcurrentHashMap<String,String> params = new ConcurrentHashMap(); params.put("lastLocation",mLastLocation.toString()); sendEvent(getReactApplicationContext(),"geoCoordsChanged",params); } @Override public void onConnectionFailed(ConnectionResult result) { Log.i(TAG,"Connection failed: ConnectionResult.getErrorCode() = " + result.getErrorCode()); } @Override public void onConnectionSuspended(int cause) { mGoogleApiClient.connect(); } @ReactMethod public void getLastLocation(Callback success,Callback err){ try { String msg = "No location found yet"; if(mLastLocation != null){ msg = mLastLocation.toString(); } success.invoke(msg); } catch (Exception e) { err.invoke(e.getMessage()); } } private void sendEvent(ReactContext reactContext,String eventName,@Nullable ConcurrentHashMap<String,String> params) { try { reactContext .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) .emit(eventName,params); } catch(Exception e){ } } 权限: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <application android:allowBackup="true" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:theme="@style/AppTheme"> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> 我还没有从logcat日志中找到任何相关内容.任何提示这个代码有什么问题或任何一种获得地理坐标的解决方案都会很棒! 解决方法
更新:叹息.我很快就说了.这是0.15.0:
https://github.com/facebook/react-native/releases/tag/v0.15.0的一部分
官方模块似乎尚未开源(参见:Known Issues),但事实上有documentation for using it with Android表明它会在某个时间出现……很快?与此同时,这是我一个月后和谷歌谷歌搜索后的情况: > rn-geolocation(看起来很简单.试试这个.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- [深入剖析React Native总贴]React Native学习路线
- 服务器端编程心得(二)—— Reactor模式
- Swift中类似C++和ruby中的final机制
- c -cli – 使用Predicate with Array :: FindAll()编译C/C+
- TQ2440 学习笔记—— 7、NOR Flash 和 NAND Flash
- plsql – Oracle仅显示“PL / SQL过程已成功完成”.运行代码
- Flex Application初始化顺序
- The-Swift-2.0-Programming-Language-playground
- 具有无限数量参数的Ruby函数
- 【Ajax】[bug] 页面 eval() 处理 Json 数据报错