Подтвердить что ты не робот

Android Phonegap - Как открыть собственное приложение Google Maps

Я работаю над Android-приложением, используя Phonegap, и мне трудно понять, как открыть собственное приложение Google Maps для отображения маршрутов. У меня нет каких-либо проблем с открытием карты, вставив URL-адрес, но открытие приложения сильно меня озадачило. Пока мне только удалось найти предложения, связанные с Phonegap для разработки на платформе iOS.

Я добавил Карты Google в разрешения белого списка, включая правильный файл Cordova.js и ссылку google maps в теге script, имею правильные разрешения в моем файле AndroidManifest.xml, включая Cordova.jar и Google Map API в моем пути сборки, в папке res, в папке res, js файле в каталоге my/www, jar файле в каталоге libs есть папка xmlgg.

То, что я пытаюсь выполнить:

  • 1. При нажатии ссылки откройте собственное приложение Google Maps. Если приложение не установлено на устройстве, уведомите пользователя о том, что Карты Google не установлены и должны быть установлены.

    • а. Я уже проверяю подключение к сети и обработку, как это должно быть сделано.
    2. Карты Google открывают отображение маршрутов из текущего местоположения пользователя в местоположение щелкнутой ссылки.

Пример ниже работает на моем устройстве Android точно так же, как и на iOS, но, очевидно, не открывает действия приложения Google Maps.

<a> href="#" onclick="location.href='http://maps.google.com/maps?q=TD Washington DC'; return false;"><img src="img/ico_pin.png" />White House</a></a>

Второй пример добавляется к первому, включая конечное местоположение, хотя мне не удалось выяснить, как вставить текущее местоположение. Самое главное, однако, он все еще не открывает приложение Google Maps.

<a href="javascript:openMaps('daddr=1600+Pennsylvania+Ave+NW+Washington+DC+20500+USA');"><img src="img/ico_pin.png" />White House</a>

function openMaps(querystring) {
    var maproot = '';
    maproot = 'http://maps.google.com/maps?saddr=Current+Location&';
    window.location = maproot + querystring;
}

В третьем примере ниже я могу отображать карту в своем приложении. Он показывает правильный маршрут (из служебного вида из точки A в точку B), но снова не открывает фактическое приложение Google Maps.

<a id="whDirections" href="#mm_directions" onclick="getDirections()">
                    <img src="img/ico_pin.png" />White House</a>

<div data-role="content">
    <div class="ui-bar-c ui-corner-all ui-shadow" style="padding: 1em;">
        <div id="mapdirections_canvas" style="height: 300px;"></div>
    </div>
</div>

function getDirections() {
    var directionsService = new google.maps.DirectionsService();
    var map;
    var directionsDisplay = new google.maps.DirectionsRenderer();
    var mapOptions = {
        zoom: 9,
        zoomControl: true,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("mapdirections_canvas"), mapOptions);
    directionsDisplay.setMap(map);

    var myLatLng = new google.maps.LatLng(gmmLat, gmmLong);
    if (document.getElementById("whDirections")) {
        var request = {
            origin: myLatLng,
        destination: new google.maps.LatLng(38.897096, -77.036545), 
            travelMode: google.maps.TravelMode.DRIVING
    };
    directionsService.route(request, function(result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(result); 
        }
    });
}

Если у кого есть ссылка или какая-либо идея по этому поводу, я бы очень признателен за помощь. Помимо приложения "Hello World", это мое первое мобильное приложение. Пожалуйста, дайте мне знать, если я пропустил что-либо или если я просто делаю это совершенно неправильно. Если какая-либо дополнительная информация необходима, сообщите мне.

Заранее благодарим за помощь.

4b9b3361

Ответ 1

Используйте geo: тип uri.

<a href="geo:38.897096,-77.036545">open map</a>

и пользователь получит возможность открытия любого из приложений сопоставления, установленных на их устройстве.

Ответ 2

Эта работа для меня...

var addressLongLat = yourLatitude+','+yourLongitude

Для Android Maps App:

window.open("geo:"+addressLongLat);

Для приложения iOs Maps:

window.open("http://maps.apple.com/?q="+addressLongLat, '_system');

Для Карт Google в браузере приложений:

window.open("http://maps.google.com/?q="+addressLongLat, '_system');

Ответ 3

Для всех версий phonegap/cordova или веб-браузера. Это будет карта Google для родного приложения.

Для навигации с текущего местоположения до q - window.open( "google.navigation: q = 23.3728831,85.3372199 & mode = d", '_system');

Для поиска - window.open( "geo: 0,0? q = pizza", '_system');

Читайте здесь - https://developers.google.com/maps/documentation/android/intents

Ответ 4

Запуск Navigator Cordova/Phonegap Plugin можно использовать для перехода к пункту назначения с помощью встроенного навигационного приложения: -

  • Android: Google Navigator
  • iOS: Карты Apple/Карты Google
  • Телефон Windows: Карты Bing

Ответ 5

Это то, что я использую:

function (lat, lon) {
    var latLon = lat + ',' + lon;

    if (device.platform.toUpperCase() === "ANDROID") {
        window.open("geo:" + latLon, "_system");
    } else if (device.platform.toUpperCase() === "IOS") {
        window.open("http://maps.apple.com/?sll=" + latLon + "&z=100&t=k", "_system");
    }
}

Примечание: при открытии карт Apple, sll=... и t=k, это означает, что я указываю точную долготу и широту, а t=k означает, что я хочу отображать карты спутников для отображения спутниковых снимков. Кроме того, я пишу только для iOS и Android, поэтому, если вы используете другие платформы, обязательно проверяйте их явно для каждого! Я уверен, что Android geo: всегда работает так, как вы ожидали, но я мог ошибаться. Помните: проверьте все на реальном устройстве!

Ответ 6

Это работает в кордове 3.4

window.open("http://maps.google.com/?q=" + address, "_system");

С помощью этого метода Google Maps показывает маркер и может использовать текстовый адрес, а не только длинные координаты