Предназначение для Google Maps 7.0.0 с местоположением

Сначала я знаю, что в StackOverflow есть несколько подобных вопросов. Вкратце я использую гео-схему для адресации точек, которые могут обрабатываться другими приложениями.

Как и в примере документации для Android (кстати, он устарел от RFC!) Я попытался использовать что-то вроде этого:

geo:50.95144,6.98725?q=50.95144,6.98725%20(Disneyland)

Итак, я получаю намеренный выбор, где я могу выбрать приложение, которое показало мне в случае с Дисками в Картах Google с маркером на нем. Теперь кажется, что было установлено обновление, которое удаляет эту поддержку. Я просто получил сообщение о том, что это место не найдено.

Я попытался понять RFC 5870, который определяет схему URI "geo". Я не понимаю. Правильно, что вообще невозможно определить листок?

Как мне теперь привязать позицию к Картам Google?

Ответ 1

Цель WhatsApp:

СТАРТ u0 {act = android.intent.action.VIEW кот = [android.intent.category.BROWSABLE] dat = https://maps.google.com?/карты Q = LOC: широта, LNG + (Вы) & RLZ = 1Y1TXLS_enDE543DE543flg = 0x3000000 cmp = com.android.browser/.BrowserActivity(имеет дополнительные функции)} от pid 2115

Итак, если вы используете следующий URI-код намерения:

String geoUri = "http://maps.google.com/maps?q=loc:" + lat + "," + lng + " (" + mTitle + ")";

... он должен вести себя как WhatsApp. Кроме того, похоже, что некоторые другие геоприложения запускаются и в этом намерении. Но это не работает для всех геоприложений!

Ответ 2

Это работает над последними версиями Google Maps v7.1 на моем Nexus 4.

    public static void launchGoogleMaps(Context context, double latitude, double longitude, String label) {
        String format = "geo:0,0?q=" + Double.toString(latitude) + "," + Double.toString(longitude) + "(" + label + ")";
        Uri uri = Uri.parse(format); 
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(intent);
}

Ответ 3

Как в примере документации на Android (кстати, это устарело, RFC это!) Я попытался использовать что-то вроде этого

Четыре образца конструкций в документации:

geo:latitude,longitude
geo:latitude,longitude?z=zoom
geo:0,0?q=my+street+address
geo:0,0?q=business+near+city

Вы заметите, что ни один из них не имеет "метки" в круглых скобках, разделенных пробелом от остальной части Uri.

Теперь кажется, что было установлено обновление, которое удаляет эту поддержку

Эта "поддержка", если она существовала раньше, была недокументирована, и вы не должны были полагаться на нее. Вы также заметите, что для Android существует множество приложений для сопоставления, любой из которых пользователь может выбрать для geo: Intent - вы все это проверили, чтобы проверить, работает ли ваша недокументированная возможность для всех из них?

Правильно, что вообще невозможно определить листок?

Я не вижу никаких доказательств вашего синтаксиса ярлыков в круглых скобках в этом RFC. Хотя, я согласен, эти IETF RFC, как правило, трудно читать.

Как мне теперь привязать позицию к Картам Google?

Отбросьте метки в круглых скобках:

geo:50.95144,6.98725?q=50.95144,6.98725

И, поскольку вам больше не нужна часть ?, вы можете использовать:

geo:50.95144,6.98725

Если ваш реальный вопрос: "Как я могу теперь привязать позицию к Картам Google и показать ее собственный ярлык", возможно, вы не можете.

Вы можете встроить механизм преобразования в свое приложение (например, Google Maps V2 для Android), и в этом случае вы можете пометить карту в пределах этого API для этого механизма. Я ожидал бы, что любой серьезный механизм сопоставления поддерживает добавление маркеров с какой-то меткой.