Мое приложение должно показывать направления Google Maps от A до B, но я не хочу помещать Google Maps в свое приложение - вместо этого я хочу запустить его с помощью Intent. Это возможно? Если да, то как?
java
android
google-maps
android-intent
Ларс Д
источник
источник
Ответы:
Вы можете использовать что-то вроде этого:
Чтобы начать навигацию с текущего местоположения, удалите
saddr
параметр и значение.Вы можете использовать фактический адрес улицы вместо широты и долготы. Однако это даст пользователю возможность выбора между открытием через браузер или Google Maps.
Это запустит Google Maps в режиме навигации напрямую:
ОБНОВИТЬ
В мае 2017 года Google запустил новый API для универсальных кроссплатформенных URL-адресов Карт Google:
https://developers.google.com/maps/documentation/urls/guide
Вы также можете использовать Intents с новым API.
источник
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
Это немного не по теме, потому что вы спрашивали «указания», но вы также можете использовать схему Geo URI, описанную в документации Android:
http://developer.android.com/guide/appendix/g-app-intents.html
Проблема с использованием «гео: широта, долгота» заключается в том, что Карты Google центрируются только в вашей точке без каких-либо булавок или меток.
Это довольно запутанно, особенно если вам нужно указать точное место или / и попросить указания.
Если вы используете параметр запроса "geo: lat, lon? Q = name" для того, чтобы пометить свое геопункт, он использует запрос для поиска и отклоняет параметры lat / lon.
Я нашел способ центрировать карту с широтой / долготой и отобразить булавку с пользовательской меткой, что очень удобно для отображения и полезно при запросе указаний или любых других действий:
ПРИМЕЧАНИЕ (от @TheNail): не работает в Maps v.7 (последняя версия на момент написания). Будет игнорировать координаты и искать объект с заданным именем в скобках. См. Также Назначение для Google Maps 7.0.0 с указанием местоположения.
источник
geo:37.423156,-122.084917?q=37.423156,-122.084917 ...
?Хотя текущие ответы великолепны, ни один из них не сделал то, что я искал, я хотел открыть только приложение карт, добавить имя для каждого исходного местоположения и пункта назначения, используя схему гео-URI для меня и вообще, на веб-ссылке на картах не было ярлыков, поэтому я пришел к этому решению, которое, по сути, представляет собой объединение других решений и комментариев, сделанных здесь, надеюсь, это будет полезно для других, просматривающих этот вопрос.
Чтобы использовать ваше текущее местоположение в качестве отправной точки (к сожалению, я не нашел способа обозначить текущее местоположение), используйте следующее
Для полноты, если у пользователя нет установленного приложения карт, то будет хорошей идеей перехватить ActivityNotFoundException, тогда мы сможем начать действие снова без ограничения приложения карт, мы можем быть уверены, что никогда не получим Toast в конце, так как интернет-браузер является допустимым приложением для запуска этой схемы URL.
PS Любые широты или долготы, использованные в моем примере, не являются репрезентативными для моего местоположения, любое сходство с истинным местоположением является чистым совпадением, иначе я не из Африки: P
РЕДАКТИРОВАТЬ:
Для указаний теперь поддерживается навигация с помощью google.navigation.
источник
Использование последних кроссплатформенных URL Карт Google : даже если приложение Google Maps отсутствует, оно откроется в браузере
Пример https://www.google.com/maps/dir/?api=1&origin=81.23444,67.0000&destination=80.252059,13.060604
источник
Откройте Google Карты, используя Intent с разными режимами:
Мы можем открыть приложение Google Maps, используя намерение:
Здесь «mode = b» для велосипеда.
Мы можем установить режимы вождения, ходьбы и езды на велосипеде, используя:
Вы можете узнать больше о намерениях с Google Maps здесь .
Примечание: если нет маршрута для велосипеда / автомобиля / пешехода, он покажет вам «Не могу найти дорогу туда»
Вы можете проверить мой оригинальный ответ здесь .
источник
Ну, вы можете попробовать открыть встроенное приложение Android Maps с помощью
Intent.setClassName
метода.источник
Для нескольких точек маршрута также могут быть использованы следующие.
Первый набор координат - ваше начальное местоположение. Все следующие являются путевыми точками, проложенный маршрут проходит.
Просто продолжайте добавлять путевые точки, указав в конце «/ широта, долгота». Существует, по-видимому, ограничение в 23 путевых точки в соответствии с Google Docs . Не уверен, что это относится и к Android.
источник
Если вы заинтересованы в отображении широты и долготы от текущего направления, вы можете использовать это:
Следующий запрос поможет вам выполнить это. Вы можете передать широту и долготу пункта назначения здесь:
Используйте выше как:
Или, если вы хотите показать через местоположение, используйте:
Больше информации здесь: Google Maps Intents для Android
источник
mapIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Google
DirectionsView
с местоположением источника в качестве текущего местоположения и местоположения пункта назначения, заданного в виде строкиВ приведенном выше
destinationCityName
тексте строка может быть изменена при необходимости.источник
попробуй это
источник
Вот что сработало для меня:
источник
если вы знаете точку A, точку B (и любые другие объекты или дорожки между ними), вы можете использовать файл KML вместе со своими намерениями.
для получения дополнительной информации см. этот SO ответ
ПРИМЕЧАНИЕ. В этом примере используется образец файла, который (по состоянию на 13 марта) все еще находится в сети. если он отключился, найдите файл kml в Интернете и измените свой URL
источник
Прежде всего вам нужно теперь, чтобы вы могли использовать неявное намерение, документация Android предоставляет нам очень подробные общие намерения для реализации намерения карты, вам нужно создать новое намерение с двумя параметрами
Для действий, которые мы можем использовать,
Intent.ACTION_VIEW
а для Uri мы должны построить его, ниже я приложил пример кода для создания, построения и запуска действия.источник
<scheme>://<authority><absolute path>?<query>#<fragment>
не непрозрачных URI<scheme>:<opaque part>#<fragment>
. Приведенный выше код приводит к следующему URI:geo:/0%2C0?Eiffel%20Tower
что приводит к сбою приложения Google Maps. По этой же причине даже официальная документация использует необработанные / непрозрачные URI. Правильный код будет:Uri.parse("geo:0,0?q=" + Uri.encode("Eiffel Tower"))
Хорошее решение kotlin, использующее последний кроссплатформенный ответ, упомянутый lakshman sai ...
Нет ненужных Uri.toString и Uri.parse, хотя этот ответ чистый и минимальный:
источник
Таким способом вы можете запустить Google Maps Directions через Android
источник