HTML5 геолокация не работает в GWT JSNI - PullRequest
0 голосов
/ 08 июня 2019

Я использовал navigator.geolocation () в GWT JSNI (собственный интерфейс javascript), как показано ниже, и раньше он работал хорошо, но не в последнее время.

private native void getGeolocation()/*-{
// Using HTML5 geolocation.
    if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
        var pos = {
            lat: position.coords.latitude,
            lng: position.coords.longitude
        };
    console.log('Pos: ' + pos);
    }, function() {
      console.log('error geolocation service');
    });
} else {
    // Browser doesn't support Geolocation
    console.log('geolocation not support');
}
}-*/;

Я получу ошибку 'Журнал службы геолокации без браузера попросил у меня разрешения на местоположение.Однако, если я выполнил часть кода JS непосредственно в консоли, браузер запросит разрешение на местоположение.

Похоже, что navigator.geolocation не работает в JSNI.Или я что-то там пропустил?

Спасибо

1 Ответ

0 голосов
/ 08 июня 2019

Вы можете попробовать использовать GTW Геолокация . Это все еще экспериментальный API, но я думаю, что это лучше, чем использование JSNI.

Экспериментальный API: этот API все еще находится в стадии разработки и может быть изменен.

Это может поддерживаться не во всех браузерах.

Geolocation geolocation = Geolocation.getIfSupported();
if(geolocation != null) {
    geolocation.getCurrentPosition(new Callback<Position, PositionError>() {
        @Override
        public void onSuccess(Position result) {
            if(result.getCoordinates() != null) {
                Window.alert("Latitude: " + Double.toString(result.getCoordinates().getLatitude()));
                Window.alert("Longitude: " + Double.toString(result.getCoordinates().getLongitude()));
            }
            else
                Window.alert("No coordinates available");
        }

        @Override
        public void onFailure(PositionError reason) {
            Window.alert(reason.getMessage());
        }
    });
}
...