Метка географического намерения не отображается в приложении Google Maps

#java #android #google-maps #kotlin #google-maps-markers

#java #Android #google-карты #kotlin #google-карты-маркеры

Вопрос:

Поскольку мое приложение Google Maps недавно обновилось, теперь версия 10.11.1, следующий код не отображает метку ожидаемым образом, документировано и ранее работало:

   val intent = Intent(Intent.ACTION_VIEW, Uri.parse("geo:38.8951,100.0364?q=38.8951,100.0364(foo)")).setPackage("com.google.android.apps.maps")
  if (intent.resolveActivity(packageManager) == null) {
    intent.setPackage(null)
  }
  startActivity(intent)
  

И эта версия также не отображается ( 0,0 сразу после geo: ):

   val intent = Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=38.8951,100.0364(foo)")).setPackage("com.google.android.apps.maps")
  if (intent.resolveActivity(packageManager) == null) {
    intent.setPackage(null)
  }
  startActivity(intent)
  

В коде примера в официальной документации метка также не отображается:

 // Display a label at the location of Google's Sydney office
Uri gmmIntentUri = Uri.parse("geo:0,0?q=-33.8666,151.1957(Google Sydney)");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
  

нет метки quot;Google Sydneyquot; на Moto G5

Комментарии:

1. Подтверждено — работает в версии 10.10.1, не работает в версии 10.12.1.

2. @xinaiz Спасибо за подтверждение. К сожалению, я не смог найти никакого значимого способа сообщить об этой ошибке в Google. Их команда Maps переложила ответственность на команду app, и для приложения нет обычной системы отчетов об ошибках, в которой могут голосовать несколько человек. Если вы знаете какой-либо способ сообщить Google, пожалуйста, дайте мне знать.

3. Я только что столкнулся с этим сам и заметил, что старое приложение Maps в моем эмуляторе показывает метки, но последняя версия на моем телефоне на сегодняшний день полностью игнорирует метку.

4. Сегодня метка работает нормально для последней версии Google Map, но когда я попытался проверить ее снова, метка сразу же исчезла.

5. Проблема с июнем 2020 года все еще существует.

Ответ №1:

Обновление: планируется исправить в версии 11.12, возможно, до конца января 2022 года.

По-прежнему нет решения, даже с последним обновлением карты 10.12.1 метка по-прежнему не отображается, даже если в документации по-прежнему указано, что это должно быть Я создал проблему в системе отслеживания проблем Google:https://issuetracker.google.com/issues/129726279

надеюсь, вскоре у нас появится некоторая информация.

Комментарии:

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

2. Кто-нибудь может обновить статус, поскольку я работаю над последней версией 10.18.2. Проблема все еще существует. Есть альтернативное решение? Пожалуйста, дайте мне знать.

3. По-прежнему нет решения: (

Ответ №2:

Согласно Google, это ошибка в приложении Google Maps. Это исправлено в версии 11.12.

Ответ №3:

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

Я рекомендую следующее решение в соответствии с новыми стандартами Google. https://developers.google.com/maps/documentation/urls/android-intents:

https://www.google.com/maps/dir/?api=1amp;destination=LATITUDE,LONGITUDE

Если вы посмотрите на большинство приложений в наши дни, включая те, которые я создал, это позволяет нам размещать широту / ДЛИНУ для перехода пользователя с собственными значениями адреса Google, встроенными в качестве метки назначения.

Чтобы фактически запустить приложение Google Maps, просто запустите веб-намерение, в данном случае я использую контекст приложения.

     fun startGoogleMaps(context: Context, lat: Double, long: Double) {
        startWebBrowser(
            context,
            Uri.parse("https://www.google.com/maps/dir/?api=1amp;destination=$lat,$long")
        )
    }

    fun startWebBrowser(context: Context, link: Uri?) {
        if (link != null) {
            val webIntent = Intent(Intent.ACTION_VIEW, link).apply {
                addFlags(FLAG_ACTIVITY_NEW_TASK)
            }
            if (webIntent.resolveActivity(context.packageManager) != null) {
                context.startActivity(webIntent)
            }
        }
    }
  

Комментарии:

1. @user2297550 Я понимаю разочарование. Это не только полезный способ обойти текущую проблему, но и то, сколько компаний и проектов решили заняться ее созданием. Он просто запускает указания с фактического текста, запрошенного самим Google, вместо уродливой альтернативы Lat / Long. Я объяснил, почему Google, возможно, приостанавливает действие этой проблемы, не для того, чтобы «подлизаться» к ним, а для того, чтобы дать возможное представление об этой проблеме.

2. Куда исчез мой комментарий?

3. Однако это регрессия. Раньше она работала нормально в течение многих лет. Я впервые начал использовать эту функцию в 2015 году. Сбой произошел где-то в начале 2019 года и не был исправлен.