2016-12-14 20 views
0

Я использую SKMaps v3.0 SDK для Android, и я пытаюсь изменить режим управления пользователями в Rotating_Map, чтобы пользователь мог поворачивать карту с позиции заголовка.Режим заголовка Вращающаяся карта

Вот мой код:

private void followTheUserWithHeading(int transitionTime){ 
    mapView.getMapSettings().setCurrentPositionShown(true); 
    mapView.getMapSettings().setFollowPositions(true); 
    mapView.getMapSettings().setHeadingMode(SKMapSettings.SKHeadingMode.ROTATING_MAP); 
    mapView.animateToBearing(1.0f,true,transitionTime); 
    mapView.centerOnCurrentPosition(17,true,500); 
} 

С followTheUserWithHeading() вызывается в onRouteCalculationCompleted методом.

К сожалению, карта не вращается с ориентацией на мобильный телефон.

N.B. : виден пользовательский конус, что не имеет значения при использовании SKHeadingMode.ROUTE. Так что кажется, что мой код не совсем дерьмо ... Я также пробовал ROTATING_HEADING, но не лучше.

Большое спасибо :)

ответ

0

Хорошо, я наконец нашел решение моей проблемы ...

Это не вопрос пешеходного режима. Чтобы сделать ROTATIN_MAP, вы должны реализовать все события датчика.

Смотрите в демонстрационном проекте Android для получения более подробной информации, но вот посмотреть на фрагмент кода

private void setHeading(boolean enabled) { 
    if (enabled) { 
     headingOn = true; 
     mapView.getMapSettings().setHeadingMode(SKHeadingMode.ROTATING_MAP); 
     startOrientationSensor(); 
    } else { 
     headingOn = false; 
     mapView.getMapSettings().setHeadingMode(SKMapSettings.SKHeadingMode.NONE); 
     stopOrientationSensor(); 
    } 
} 

/** 
* Activates the orientation sensor 
*/ 
private void startOrientationSensor() { 
    orientationValues = new float[3]; 
    SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    Sensor orientationSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); 
    sensorManager.registerListener(this, orientationSensor, SensorManager.SENSOR_DELAY_UI); 
} 

/** 
* Deactivates the orientation sensor 
*/ 
private void stopOrientationSensor() { 
    orientationValues = null; 
    SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    sensorManager.unregisterListener(this); 
} 
+0

У меня есть предоставил вам ответ, связанный с библиотекой skmaps. если вы хотите повернуть карту, используя информацию о заголовке, очевидно, что вам нужно иметь доступ к этой информации о курсе, и это приобретается с использованием датчиков. –

1

Эта функция доступна только в пешеходной навигации.

+0

Хорошо, я не упоминал об этом, но я использую Пешеходный режим навигации в режиме Пешеход Маршрут :) – GrayFox

3

Эта функция работает только тогда, когда используется режим пешеходной навигации (установить его с помощью вызова, как navigationSettings.setNavigationMode (SKNavigationSettings.SKNavigationMode.PEDESTRIAN);) Для того, чтобы включить эту функцию вам необходимо убедиться, что вы звоните . mapView.getMapSettings() setHeadingMode (SKMapSettings.SKHeadingMode.ROTATING_MAP); только после того, как навигация началась (navigationManager.startNavigation (navigationSettings);) Я приложил видео ниже показывает рабочую функциональность: https://www.dropbox.com/s/onnsbeavldxvdpu/20161221_PedestrianNavigation_RotatingMap.mp4?dl=0