Намерение навигации по Google Maps с использованием идентификатора Google Place, а не координат или адреса - PullRequest
3 голосов
/ 28 апреля 2020

Из Google, https://developers.google.com/maps/documentation/urls/android-intents#launch_turn -by-turn_navigation ,

Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Однако я могу успешно открыть карты Google и перейти непосредственно к навигации, поскольку на предыдущей странице моего приложения Я использую функцию автозаполнения Google и получаю Place. И есть placeId для каждого места. Проблема в том, как использовать описанный выше пошаговый способ навигации, но используя placeId вместо адреса или координат (placeId более точен, чем эти два).

Ответы [ 3 ]

0 голосов
/ 06 мая 2020

Взято из документов и того, как я реализую это в своем приложении:

Конечная точка API имеет два параметра, как вы можете видеть в первой строке - query и query_place_id. query не обязательно должен быть точным, если у вас есть идентификатор места, так как идентификатор места намного точнее, так что вы можете видеть, что я просто ввел строку заполнителя (параметр все еще требуется в API). Добавьте идентификатор места в конечную точку и установите намерение, как показано, которое является правильным намерением открыть навигацию по Google Maps на телефоне android.

Uri gmmIntentUri = Uri.parse("https://www.google.com/maps/search/?api=1&query=qwerty&query_place_id=" + loc_id);
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
0 голосов
/ 08 мая 2020

Следуя документации URL Карт Google, вы можете создать следующий URL для «Эйфелевой башни» (например, ID ChIJLU7jZClu5kcR4PcOOO6p3I0).

Попробуйте здесь, чтобы продолжить. здесь

Итак, ваш код будет выглядеть примерно так:

Uri gmmIntentUri = Uri.parse("https://www.google.com/maps/search/?api=1&query=qwerty&query_place_id=" + loc_id);
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(mapIntent);
}

Надеюсь, это поможет вам. Спасибо.

0 голосов
/ 29 апреля 2020

Кажется, что нет возможности использовать напрямую placeId int навигационное намерение по очереди, но в любом случае вы можете передать координаты Place в навигацию:

Place place = PlaceAutocomplete.getPlace(this, data);

if (place != null) {
    LatLng latLng = place.getLatLng();
    String strLatitude = String.valueOf(latLng.latitude);
    String strLongitude = String.valueOf(latLng.longitude);

    Uri gmmIntentUri = Uri.parse(String.format("google.navigation:q=%s,%s",strLatitude, strLongitude));
    Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
    mapIntent.setPackage("com.google.android.apps.maps");
    startActivity(mapIntent)
}
...