首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UserLocation不工作MapBox

UserLocation不工作MapBox
EN

Stack Overflow用户
提问于 2018-05-16 14:23:04
回答 2查看 1.1K关注 0票数 0

我试图在安卓设备上使用LocationEngine获取用户位置,但当我启动应用程序时,用户的标记位于(0.0,0.0),并且从不更新它的位置。这怎么可能呢?

我尝试复制示例location Layer

代码语言:javascript
复制
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

代码语言:javascript
复制
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'

EN

回答 2

Stack Overflow用户

发布于 2018-07-07 15:44:12

我也有同样的问题。问题是你试图获得高精度的定位。高精度应该利用全球定位系统、蜂窝数据、WiFi等的组合来获得最准确的位置;但由于某些我不知道的原因,它不起作用。

有四个选项:

NO_POWER

LOW_POWER

BALANCED_POWER_ACCURACY

HIGH_ACCURACY

我修改了下面这行代码:

代码语言:javascript
复制
locationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY);

要这样做:

代码语言:javascript
复制
locationEngine.setPriority(LocationEnginePriority.BALANCED_POWER_ACCURACY);

它成功了!

票数 2
EN

Stack Overflow用户

发布于 2018-05-16 22:49:51

关于您的代码片段的一些注释。

代码语言:javascript
复制
LocationLayerOptions options = LocationLayerOptions.builder(this)
            .build();

是不需要的,因为你实际上并没有改变任何选项。

代码语言:javascript
复制
locationLayerPlugin.setLocationLayerEnabled(true);

不需要,因为您正在上面调用setRenderMode,它会自动启用它

https://github.com/mapbox/mapbox-plugins-android/issues/460中已经报告了在空岛(0.0,0.0)处查看用户位置的问题。

对于位置更新,它看起来像是附加了一个侦听器。您是否正在接收该侦听器和位置层中的更新,只是没有更新,还是根本没有接收到任何更新?如果是后者,这更可能是locationEngine而不是Location层插件的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50363724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档