Ответ 1
Используйте geo: тип uri.
<a href="geo:38.897096,-77.036545">open map</a>
и пользователь получит возможность открытия любого из приложений сопоставления, установленных на их устройстве.
Я работаю над 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.
То, что я пытаюсь выполнить:
Пример ниже работает на моем устройстве 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", это мое первое мобильное приложение. Пожалуйста, дайте мне знать, если я пропустил что-либо или если я просто делаю это совершенно неправильно. Если какая-либо дополнительная информация необходима, сообщите мне.
Заранее благодарим за помощь.
Используйте geo: тип uri.
<a href="geo:38.897096,-77.036545">open map</a>
и пользователь получит возможность открытия любого из приложений сопоставления, установленных на их устройстве.
Эта работа для меня...
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');
Для всех версий 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
Запуск Navigator Cordova/Phonegap Plugin можно использовать для перехода к пункту назначения с помощью встроенного навигационного приложения: -
Это то, что я использую:
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:
всегда работает так, как вы ожидали, но я мог ошибаться. Помните: проверьте все на реальном устройстве!
Это работает в кордове 3.4
window.open("http://maps.google.com/?q=" + address, "_system");
С помощью этого метода Google Maps показывает маркер и может использовать текстовый адрес, а не только длинные координаты