gpt4 book ai didi

android - Mapbox 我的位置漂移 android

转载 作者:行者123 更新时间:2023-11-29 19:27:12 24 4
gpt4 key购买 nike

我在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com