상당히 간단한 설정 (아래 참조)으로 안드로이드 (7.0 및 7.1에서 Nexus 5x로 테스트)에서 MapBox를 사용하고 있습니다. 이상한 점은 휴대 전화가 움직이지 않거나 내가 걷고있는 것처럼 사용되면지도가 표류하기 시작한다는 것입니다. 아래 코드 샘플은 복제 할 최소값입니다. 추가 위치 수신기를 추가하고 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"/>