Создать маршрут маршрута, передавая путевые точки в GoogleMaps Android

Я работаю над функциональностью, куда я отправляю waypoints в Gmapsприложение через Intent так что использование может перейти к месту назначения по обычаю waypoints что я отправляю

Я, когда я прокладываю этот маршрут в моем встроенном Google Maps, Я могу видеть Circuit route, но когда я вижу тот же маршрут в Gmapsприложение, Circuit сломано.

Мой код:

String srcAdd = "saddr="+latLngArrayList.get(0).latitude+","+latLngArrayList.get(0).longitude;
        String desAdd = "&daddr="+latLngArrayList.get(latLngArrayList.size() - 1).latitude+","+latLngArrayList.get(latLngArrayList.size() - 1).longitude;
        String wayPoints = "";

        for (int j = 1; j < latLngArrayList.size() - 1; ++j) {

            wayPoints =wayPoints+"+to:"+latLngArrayList.get(j).latitude+","+latLngArrayList.get(j).longitude;
        }

        String link="https://maps.google.com/maps?"+srcAdd+desAdd+wayPoints;
        final Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(link));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
        startActivity(intent);

маршрут маршрута

нет маршрута

1 ответ

Решение

Я бы посоветовал взглянуть на API Google Maps URLs, который был запущен в мае 2017 года. Этот API предоставляет универсальные кроссплатформенные ссылки, которые вы можете использовать в своих приложениях для запуска намерений для Google Maps. Один из поддерживаемых режимов - режим направлений. Вы можете прочитать об этом здесь:

https://developers.google.com/maps/documentation/urls/guide

Поскольку вы используете API-адреса и публикуете примеры координат путевых точек, я смог проверить результаты в веб-сервисе и в URL-адресах Карт Google.

Результаты веб-сервиса проверяются в калькуляторе маршрутов:

https://directionsdebug.firebaseapp.com/?origin=19.07598304748535%2C72.87765502929688&destination=19.07598304748535%2C72.87765502929688&waypoints=18.7284%2C73.4815%7C18.6876%2C73.4827%7C18.5839587%2C73.5125092%7C18.5369444%2C73.4861111%7C18.480567%2C73.491658

Маршрут, который мы получаем через API направлений, следующий

Ссылка URL Карт Google для этих путевых точек следующая

https://www.google.com/maps/dir/?api=1&origin=19.07598304748535,72.87765502929688&destination=19.07598304748535,72.87765502929688&waypoints=18.7284,73.4815%7C18.6876,73.4827%7C18.5839587,73.5125092%7C18.5369444,73.4861111%7C18.480567,73.491658&travelmode=driving

Маршрут, который вы получаете, используя URL-адреса Карт Google, показан на этом снимке экрана

Как видите, оба маршрута одинаковы, поэтому URL-адреса API-адресов и Google Maps работают, как и ожидалось. Я считаю, что вы должны изменить свой код, чтобы использовать URL-адреса Карт Google:

String srcAdd = "&origin=" + latLngArrayList.get(0).latitude + "," + latLngArrayList.get(0).longitude;
String desAdd = "&destination=" + latLngArrayList.get(latLngArrayList.size() - 1).latitude + "," + latLngArrayList.get(latLngArrayList.size() - 1).longitude;
String wayPoints = "";

for (int j = 1; j < latLngArrayList.size() - 1; j++) {
    wayPoints = wayPoints + (wayPoints.equals("") ? "" : "%7C") + latLngArrayList.get(j).latitude + "," + latLngArrayList.get(j).longitude;
}
wayPoints = "&waypoints=" + wayPoints; 

String link="https://www.google.com/maps/dir/?api=1&travelmode=driving"+srcAdd+desAdd+wayPoints;
final Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(link));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);

Кроме того, вы можете использовать dir_action=navigate параметр, чтобы открыть пошаговую навигацию напрямую.

Надеюсь, это поможет!

Другие вопросы по тегам