Подтвердить что ты не робот

Есть ли способ показать маршруты в Google Map API v2?

Я искал ответ с помощью Google и здесь, и единственные соответствующие сообщения, которые я нашел:

Google Maps Android V2 и API направления

Проложите маршрут проезда, используя Google Maps API v2

но там нет ответа. Так что я уже говорил об этом, но я скажу это снова. Я ищу решение для API Google Map v2 с использованием FragmentActivity и объектов SupportMagFragment и LatLng, а не с использованием MapView, MapActivity и GeoPoint.

Кроме того, у меня нет объекта Overlay, поэтому я не могу нарисовать направление на карте, есть ли альтернатива этому?

Так есть ли способ сделать это?

4b9b3361

Ответ 1

Попробуйте это решение здесь. Вы можете получить направление движения или ходьбы на V2.

Ответ 2

Наложение - это действительно то, что нужно забыть.

Полилинии можно легко нарисовать

https://developers.google.com/maps/documentation/android/lines#add_a_polyline

Просто пройдите через ваши точки после того, как вы проанализировали ответ JSON:

PolylineOptions rectOptions = new PolylineOptions()
        .add(new LatLng(37.35, -122.0))
        .add(new LatLng(37.45, -122.0))  // North of the previous point, but at the same longitude
        .add(new LatLng(37.45, -122.2))  // Same latitude, and 30km to the west
        .add(new LatLng(37.35, -122.2))  // Same longitude, and 16km to the south
        .add(new LatLng(37.35, -122.0)); // Closes the polyline.

// Set the rectangle color to red
rectOptions.color(Color.RED);

// Get back the mutable Polyline
Polyline polyline = myMap.addPolyline(rectOptions);

Ответ 3

Ваше название вопроса намного более общее, чем ваши требования, поэтому я отвечу на это так, как мне кажется, это принесет пользу тем, кто рассматривает этот вопрос, и, надеюсь, удовлетворит ваши требования, возможно, по-другому.

Если вы не показываете направления в контексте карты, которая уже является загруженным фрагментом, и что-то сделано для отображения направлений по карте (что, вероятно, похоже на то, что делает OP), это проще, и я считаю, что стандарт для этого используйте Intent.

Это запускает активность по перемещению карты (через отдельное приложение, в котором приложение запускается, зависит от совместимых с пользователем приложений, которые по умолчанию являются Google Maps), который отображает направления от исходного адреса (String originAddress) до адрес назначения (String destinationAddress) по дорогам:

// Build the URI query string.
String uriPath = "https://www.google.com/maps/dir/";
// Format parameters according to documentation at:
// https://developers.google.com/maps/documentation/directions/intro
String uriParams = 
    "?api=1" +
    "&origin=" + originAddress.replace(" ", "+")
        .replace(",", "") +
    "&destination=" + destinationAddress.replace(" ", "+")
        .replace(",", "") +
    "&travelmode=driving";
Uri queryURI = Uri.parse(uriPath + uriParams);
// Open the map.
Intent intent = new Intent(Intent.ACTION_VIEW, queryURI);
startActivity(activity, intent, null);

(Где activity является просто активным в настоящий момент activity - полученным с помощью любых средств, подходящих в текущем контексте программирования).

Следующий код получает адрес String из объекта LatLng (который затем должен быть обработан для запроса URI String, как указано выше):

/**
* Retrieves an address `String` from a `LatLng` object.
*/
private void getAddressFromLocation(
    final StringBuilder address, final LatLng latlng) {
    // Create the URI query String.
    String uriPath = 
        "https://maps.googleapis.com/maps/api/geocode/json";
    String uriParams = 
        "?latlng=" + String.format("%f,%f",
            latlng.latitude, latlng.longitude) +
        "&key=" + GOOGLE_MAPS_WEB_API_KEY;
    String uriString = uriPath + uriParams;
    // Issue the query using the Volley library for networking.
    RequestFuture<JSONObject> future = RequestFuture.newFuture();
    JSONObject response = null;
    // Required for JsonObjectRequest, but not important here.
    Map<String, String> jsonParams = new HashMap<String, String>();
    JsonObjectRequest request = 
        new JsonObjectRequest(Request.Method.POST, 
            uriString,
            new JSONObject(jsonParams),
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        if (response != null) {
                            String resultString =
                                response.getJSONArray("results")
                                        .getJSONObject(0)
                                        .getString("formatted_address");
                            // Assumes `address` was empty.
                            address.append(resultString);
                        } // end of if
                        // No response was received.
                    } catch (JSONException e) {
                        // Most likely, an assumption about the JSON 
                        // structure was invalid.
                        e.printStackTrace();
                    }
                } // end of `onResponse()`
            }, // end of `new Response.Listener<JSONObject>()`
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e(LOG_TAG, "Error occurred ", error);
                }
            });
    // Add the request to the request queue.
    // `VolleyRequestQueue` is a singleton containing
    // an instance of a Volley `RequestQueue`.
    VolleyRequestQueue.getInstance(activity)
        .addToRequestQueue(request);
}

Этот запрос является асинхронным, но он может быть выполнен синхронно. Вам нужно будет вызвать toString() для фактического параметра, переданного в address, чтобы получить originAddress.

Ответ 4

В: Я искал ответ, используя Google, и здесь, и только соответствующие сообщения, которые я нашел: Google Maps Android V2 и Direction API API Google map v2 - получить указания по проезду

Ответ: Ваше высказывание, "но ответа там нет". не совсем верно. На этом сайте вы можете найти всего лишь несколько подсказок. Я думаю, что вы не получите идеальный код и конкретный инструмент KNOW-HOW здесь. На самом деле, многие разработчики хотят, чтобы приложение отображало маршрутизацию или маршруты на Картах Google. Но я думаю, что нет решения, чтобы получить указания только с чистым API Карт Google v2.

В: Итак, я уже упоминал об этом, но я скажу это снова. я ищет решение для Google Map API v2, используя Объекты FragmentActivity и SupportMagFragment и LatLng, а не используя MapView, MapActivtiy и GeoPoint.

Ответ: Вот несколько хороших учебных пособий (нажмите здесь). Вы можете найти то, что хотите.

Q: Кроме того, у меня нет объекта Overlay для использования, поэтому я не могу рисовать направление на карте, есть ли альтернатива для этого? Так что есть способ сделать это?

Ответ: В API Карт Google версии 2 раздражающее наложение и т.д. больше не требуются. Для этого вы можете найти ответ на моем связанном сайте выше.