Веб-приложение для Android не может подключиться к GPS - PullRequest
0 голосов
/ 02 марта 2011

У меня есть веб-приложение, которое отображает веб-страницу в веб-представлении.Но веб-страница не может получить позицию getcurrent, однако, если я отображаю веб-страницу в браузере Android, но не в веб-приложении?

Когда страница запускается из веб-приложения, онадоходит до оповещения «здесь» в js ниже, и когда отображается страница, отображается карта с «Ошибка: сбой службы геолокации».

Кто-нибудь написал нативное веб-приложение, которое может определять геолокацию?Там должно быть что-то еще нужно в веб-приложении Java или разрешения.Кто-нибудь сделал это ..

вот HTML, я пытаюсь использовать пример Google,

http://code.google.com/apis/maps/documentation/javascript/examples/map-geolocation.html вот JS

var initialLocation;
var siberia = new google.maps.LatLng(60, 105);
var newyork = new google.maps.LatLng(40.69847032728747, -73.9514422416687);
var browserSupportFlag = new Boolean();
var map;
var infowindow = new google.maps.InfoWindow();

function initialize() {
    var myOptions = {
        zoom: 6,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    // Try W3C Geolocation method (Preferred)
    if (navigator.geolocation) {
        browserSupportFlag = true;
        alert('here navigator');
        navigator.geolocation.getCurrentPosition(function (position) {
            initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
            contentString = "Location found using W3C standard";
            map.setCenter(initialLocation);
            infowindow.setContent(contentString);
            infowindow.setPosition(initialLocation);
            infowindow.open(map);
        }, function () {
            handleNoGeolocation(browserSupportFlag);
        });
    } else if (google.gears) {
        // Try Google Gears Geolocation
        browserSupportFlag = true;
        var geo = google.gears.factory.create('beta.geolocation');
        geo.getCurrentPosition(function (position) {
            initialLocation = new google.maps.LatLng(position.latitude, position.longitude);
            contentString = "Location found using Google Gears";
            map.setCenter(initialLocation);
            infowindow.setContent(contentString);
            infowindow.setPosition(initialLocation);
            infowindow.open(map);
        }, function () {
            handleNoGeolocation(browserSupportFlag);
        });
    } else {
        // Browser doesn't support Geolocation
        browserSupportFlag = false;
        handleNoGeolocation(browserSupportFlag);
    }
}

function handleNoGeolocation(errorFlag) {
    if (errorFlag == true) {
        initialLocation = newyork;
        contentString = "Error: The Geolocation service failed.";
    } else {
        initialLocation = siberia;
        contentString = "Error: Your browser doesn't support geolocation. Are you in Siberia?";
    }
    map.setCenter(initialLocation);
    infowindow.setContent(contentString);
    infowindow.setPosition(initialLocation);
    infowindow.open(map);
}

Любые идеи .. спасибо Майк

1 Ответ

0 голосов
/ 28 марта 2011

Да, все заработало.Но я написал свой собственный объект навигатора в js и подключил его к java через интерфейс jsinterface.В основном я получил GPS, работающий в не веб-приложении.Затем написал интерфейс сценариев Java в Java.И затем вызвал jsinterface в java от js, чтобы получить гео.Хорошая вещь в моем подходе - он должен работать на 1.5 и выше и работать на эмуляторе.Плохая новость заключается в том, что она требует огромного количества кода.Этот подход будет работать, но, к сожалению, в 2.3 интерфейс javascript не очень стабилен - другие версии Android в порядке.

...