我试图在安卓设备上使用LocationEngine获取用户位置,但当我启动应用程序时,用户的标记位于(0.0,0.0),并且从不更新它的位置。这怎么可能呢?
我尝试复制示例location Layer
private void enableLocationPlugin() {
// Check if permissions are enabled and if not request
if (PermissionsManager.areLocationPermissionsGranted(this)) {
// Create an instance of LOST location engine
initializeLocationEngine();
LocationLayerOptions options = LocationLayerOptions.builder(this)
.build();
locationLayerPlugin = new LocationLayerPlugin(mapView, mapboxMap, locationEngine, options);
locationLayerPlugin.setRenderMode(RenderMode.COMPASS);
locationLayerPlugin.setCameraMode(CameraMode.TRACKING);
locationLayerPlugin.setLocationLayerEnabled(true);
} else {
permissionsManager = new PermissionsManager(this);
permissionsManager.requestLocationPermissions(this);
}
}
private void initializeLocationEngine() {
locationEngine = new LocationEngineProvider(this).obtainBestLocationEngineAvailable();
locationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY);
locationEngine.setInterval(1000);
locationEngine.setFastestInterval(500);
locationEngine.addLocationEngineListener(this);
locationEngine.activate();
locationEngine.requestLocationUpdates();
Location lastLocation = locationEngine.getLastLocation();
if (lastLocation != null) {
setCameraPosition(lastLocation);
locationEngine.addLocationEngineListener(this);
} else {
locationEngine.addLocationEngineListener(this);
}
}我在grandle中使用这个版本的MapBox
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-building:0.2.0'
implementation 'com.mapbox.mapboxsdk:mapbox-android-navigation:0.12.0'
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-locationlayer:0.5.2'
发布于 2018-07-07 15:44:12
我也有同样的问题。问题是你试图获得高精度的定位。高精度应该利用全球定位系统、蜂窝数据、WiFi等的组合来获得最准确的位置;但由于某些我不知道的原因,它不起作用。
有四个选项:
NO_POWER
LOW_POWER
BALANCED_POWER_ACCURACY
HIGH_ACCURACY
我修改了下面这行代码:
locationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY);要这样做:
locationEngine.setPriority(LocationEnginePriority.BALANCED_POWER_ACCURACY);它成功了!
发布于 2018-05-16 22:49:51
关于您的代码片段的一些注释。
LocationLayerOptions options = LocationLayerOptions.builder(this)
.build();是不需要的,因为你实际上并没有改变任何选项。
locationLayerPlugin.setLocationLayerEnabled(true);不需要,因为您正在上面调用setRenderMode,它会自动启用它
在https://github.com/mapbox/mapbox-plugins-android/issues/460中已经报告了在空岛(0.0,0.0)处查看用户位置的问题。
对于位置更新,它看起来像是附加了一个侦听器。您是否正在接收该侦听器和位置层中的更新,只是没有更新,还是根本没有接收到任何更新?如果是后者,这更可能是locationEngine而不是Location层插件的问题。
https://stackoverflow.com/questions/50363724
复制相似问题