Как загрузить результаты Android Direction API во внешнее приложение Google Maps?

Я использую Google Directions API для получения маршрутов между двумя точками с помощью Way Points.

В настоящее время я получаю информацию о направлении между двумя точками с помощью API направления и показываю результат в Google Maps, встроенном в мое приложение. Это работает хорошо, как и ожидалось. Вот как я это сделал:

    private DirectionsResult getDirectionsDetails(String origin,String destination,TravelMode mode) {
    Log.i("testtt"," Origin "+origin+" Destination "+destination);
    DateTime now = new DateTime();
    try {
        return DirectionsApi.newRequest(getGeoContext())
                .mode(mode)
                .origin(origin)
                .waypoints(waypoints.toArray(new String[0]))
                .destination(destination)
                .departureTime(now)
                .await();
    } catch (InterruptedException e) {
        e.printStackTrace();
        return null;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    } catch (com.google.maps.errors.ApiException e) {
        e.printStackTrace();
        return null;
    }
}

@Override
public void onMapReady(GoogleMap googleMap) {

    setupGoogleMapScreenSettings(googleMap);
    DirectionsResult results = getDirectionsDetails(origin,destination,TravelMode.DRIVING);
    if (results != null) {
        addPolyline(results, googleMap);
        positionCamera(results.routes[overview], googleMap);
        addMarkersToMap(results, googleMap);
    }
}

private void setupGoogleMapScreenSettings(GoogleMap mMap) {
    mMap.setBuildingsEnabled(true);
    mMap.setIndoorEnabled(true);
    mMap.setTrafficEnabled(true);
    UiSettings mUiSettings = mMap.getUiSettings();
    mUiSettings.setZoomControlsEnabled(true);
    mUiSettings.setCompassEnabled(true);
    mUiSettings.setMyLocationButtonEnabled(true);
    mUiSettings.setScrollGesturesEnabled(true);
    mUiSettings.setZoomGesturesEnabled(true);
    mUiSettings.setTiltGesturesEnabled(true);
    mUiSettings.setRotateGesturesEnabled(true);
}

private void addMarkersToMap(DirectionsResult results, GoogleMap mMap) {
    mMap.addMarker(new MarkerOptions().position(new LatLng(results.routes[overview].legs[overview].startLocation.lat,results.routes[overview].legs[overview].startLocation.lng)).title(results.routes[overview].legs[overview].startAddress));
    mMap.addMarker(new MarkerOptions().position(new LatLng(results.routes[overview].legs[overview].endLocation.lat,results.routes[overview].legs[overview].endLocation.lng)).title(results.routes[overview].legs[overview].endAddress).snippet(getEndLocationTitle(results)));
}

private void positionCamera(DirectionsRoute route, GoogleMap mMap) {
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(route.legs[overview].startLocation.lat, route.legs[overview].startLocation.lng), 12));
}

private void addPolyline(DirectionsResult results, GoogleMap mMap) {
    List<LatLng> decodedPath = PolyUtil.decode(results.routes[overview].overviewPolyline.getEncodedPath());
    mMap.addPolyline(new PolylineOptions().addAll(decodedPath));
}

Но я хочу загрузить результат этого направления во внешнее приложение Google Maps. Я спрашиваю, есть ли способ передать объект DirectionsResult в приложение Google Maps через Intent, чтобы он отображал маршруты в приложении. Причина, по которой я хочу этого, заключается в том, чтобы избежать интеграции API Карт Google с проектом, поскольку он больше не является полностью бесплатным. Детали цены

1 ответ

Как я вижу из вашего кода, вы не выполняете никаких вычислений для DirectionsDetails дано DirectionsApi Вы можете открыть передать свои координаты местоположения в Google Maps.

По умолчанию, Google maps всегда загружает лучший доступный маршрут в соответствии с текущим трафиком и временем:

String geoUri = "http://maps.google.com/maps?q=loc:" + lat + "," + lng + " (" + mTitle + ")";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(geoUri));
context.startActivity(intent);

Если вы хотите добавить waypoints между вашим источником и пунктом назначения вы можете посмотреть на этот ответ.

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

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