Ярлык географического намерения не отображается в приложении Google Maps - программирование
Подтвердить что ты не робот

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

Так как мое приложение 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 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);

no "Google Sydney" label on Moto G5

4b9b3361

Ответ 1

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

надеюсь, у нас будет некоторая информация в ближайшее время.

Ответ 2

Я столкнулся с той же проблемой сегодня. Следующие примеры Google не сработали. Единственный способ, которым это работает, - это ставить lat/lng сразу после geo: а не ставить их после ?q= вообще.

Я делаю это так:

val gUri = Uri.parse("geo:${eventDetails.latitude},${eventDetails.longitude}?q=${Uri.encode(eventDetails.place)}")

В моем случае, place не точный адрес, а просто название местоположения/здания. Это, однако, может создать некоторые проблемы. Вместо того, чтобы размещать маркер на ваших координатах с указанным вами ярлыком, поиск в Картах Google смещает результаты в указанную область И может возвращать более одного результата.

Например, если я укажу любой лат/лнг и "Оксфордский университет" как место, Google Maps доставит меня в район Оксфордского университета и поместит дюжину маркеров вокруг него, указывая на некоторые колледжи и т.д.

Предоставление адреса вместо названия места решает проблему с несколькими маркерами, так как Карты Google поместят один из них в нужное место с вашим адресом на этикетке и предоставят вам карточки с нижними листами с предложениями о том, что там. Это, однако, не является решением самой проблемы невозможности поставить маркер с вашей меткой на ваших координатах.

Вопрос в том, является ли это ошибкой, плохо документированной или способом помешать людям размещать на карте фальшивые/ненастоящие ярлыки.

Ответ 3

Вы могли бы заменить свой код этим, и если любой из них работает для вас:

Uri gmmIntentUri = Uri.parse("geo:-33.8666,151.1957?q=Google+Sydney");

или же

Uri gmmIntentUri = Uri.parse("geo:-33.8666,151.1957?q=" + Uri.encode("Google,Sydney"));

или же

Uri gmmIntentUri = Uri.parse("geo:0,0?q=-33.8666,151.1957 (Google+Sydney)");

Ответ 4

val gUri = Uri.parse("geo:${eventDetails.latitude},${eventDetails.longitude}?q=${Uri.encode(eventDetails.place)}")