android - Mapbox 我的位置漂移 android

标签 android mapbox

我在 Android 上使用 MapBox(在 7.0 和 7.1 上使用 Nexus 5x 测试),设置相当简单(见下文)。奇怪的是,当手机没有移动或被使用时, map 开始漂移,就像我在四处走动一样。下面的代码示例是要复制的最少代码。我添加了一个额外的位置监听器并将一个附加到 Mapbox。有趣的是,当我漂流时,没有位置更改的日志,这让我认为这是 Mapbox SDK (4.1.1) 中的错误。

对可能发生的事情有任何想法吗?

public class MainActivity extends AppCompatActivity {

    private MapView mMapView;
    private MapboxMap mMap;
    private LocationManager mLocationManager;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mMapView = (MapView) findViewById(R.id.map);
        mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        mMapView.onCreate();
        mMapView.getMapAsync(this::onMapReady);
        // To keep the example short I'm skipping the permissions.
        mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_UPDATE_MIN_TIME,
            GPS_UPDATE_MIN_DISTANCE, this::onLocationChanged);
    }

    @Override
    public void onSaveInstanceState(Bundle state) {
        super.onSaveInstanceState(state);
        mMapView.onSaveInstanceState(state);
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        mMapView.onLowMemory();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mMapView.onDestroy();
    }

    @Override
    public void onResume() {
        super.onResume();
        mMapView.onResume();
    }

    @Override
    public void onPause() {
        super.onPause();
        mMapView.onPause();
    }

    private void onMapReader(MapboxMap map) {
        mMap = map;
        mMap.getTrackingSettings()
                .setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
        mMap.setOnMyLocationChangeListener(this::onLocationChanged);
    }

    private onLocationChanged(Location location) {
            Log.d("Map", "Mapbox location @ " + location.getLatitude() + ", " + location.getLongitude());
    }
}

布局是:

    <com.mapbox.mapboxsdk.maps.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:style_url="@string/mapbox_style_url"
        app:tilt="45"
        app:scroll_enabled="false"
        app:zoom_enabled="false"
        app:rotate_enabled="false"
        app:logo_enabled="false"
        app:attribution_enabled="false"
        app:my_location_enabled="true"
        app:compass_enabled="false"/>

最佳答案

好的,所以这里的问题是跟踪模式在 map View 初始化期间被重置(以及对 moveCamera 的任何调用。解决方案是添加:

mMap.getTrackingSettings()
        .setDismissLocationTrackingOnGesture(false);

关于android - Mapbox 我的位置漂移 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41075118/

相关文章:

android - 如何从 HomeScreen Widget 调用 Activity 中的函数

Android ontouchlistener帮助

android - 制作像 Discord 这样的多平台应用程序的技巧

android - 无法在 Mapbox : docs outdated and examples are not working 中显示多边形要素

leaflet - 我是否必须在每个页面/应用程序中使用不同的 Mapbox 访问 token ?

java - Mapbox Android 中空对象引用上的 NavigationView

android - 在 Android 中创建接口(interface)本身的实例

android - 计算ListView每一行的高度

ios - 如何对具有不同图像(图标)的点进行聚类? map 盒

javascript - 在 Mapbox 标记弹出窗口中显示 Highchart 折线图