У меня есть простая функция, где пользователь запускает GPS и отслеживает положение, где вид карты следует за ним. Я хочу отключить функцию слежения, когда пользователь перемещает карту, но при этом оставить функцию отслеживания положения активированной, чтобы пользователь мог перемещать карту и по-прежнему просматривать свою позицию. Я пытался использовать события карты (moveend
, movestart
, change
), но они стреляют независимо от того, как движется карта. Я также пробовал с событием click
, но это событие не вызывается при панорамировании карты, а только при быстром щелчке.
Есть ли способ проверить эту разницу?
Пример положения трека OpenLayers для справки
Я нашел несколько связанных вопросов, очень похожих на мою проблему: 1 и 2 .
Цитирую второй вопрос:
map.on('moveend', function(event) {
var mapView = map.getView(),
moveInitiatedProgrammatically = mapView.get('moveInitiatedProgrammatically') || false;
mapView.unset('moveInitiatedProgrammatically');
// evaluate moveInitiatedProgrammatically's value and behave accordingly...
});
map.getView().set('moveInitiatedProgrammatically', true);
map.getView().setCenter(coord);
Это не идеально по следующим причинам:
- Вводит дополнительную информацию о состоянии в представление карты.
- Неосторожная замена вида карты приведет к потере этой информации о состоянии.
- Требуется установить свойство перед изменением состояния просмотра и может быть слишком легко забыта.
Однако, это адрес моего выпуск пока что.