Могу ли я открыть точное место на карте Google?

#java #android-studio #google-maps

#java #android-studio #google-карты

Вопрос:

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

         markers.add(new MarkerOptions().position(new LatLng(49.788238, 73.1359273)).title("KFC"));
  

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

Я ожидаю, что пользователь увидит все информационное изображение: что я ожидаю

Но пользователи видят это изображение: фактический результат

Могу ли я каким-то образом установить полную ссылку на маркер. Или я могу нажать эту кнопку на первом изображении.

ОБНОВЛЕНИЕ Я ничего не делал, просто добавил маркер, и когда я нажимаю на этот маркер, я вижу две кнопки, которые добавлены не мной. мой класс

Моя цель — увидеть точное место на картах Google, когда я нажимаю на кнопку с 1-го изображения

ОБНОВЛЕНИЕ 2 Я нашел, где эти кнопки можно включить / выключить

 mMap.getUiSettings().setMapToolbarEnabled
  

Мне действительно нужны эти кнопки, могу ли я справиться с нажатием этих кнопок или я могу указать полный URL-адрес для точного указания места?

Ответ №1:

Когда вы передаете координаты в своем намерении открыть карты Google, вы не получаете сведений о месте. Если вы также хотите получить информацию о месте (как в вашем случае), вам нужно передать имя или place_id места.

 https://www.google.com/maps/search/?api=1amp;query=centurylink field.  
  

Источник: Google Maps API

Ввод этого приведенного выше запроса в ваш Uri intent приводит к отображению местоположения маркера вместе с информацией о месте в поле ссылки Google Maps of century. Вы можете ввести желаемое название места в запрос и получить результаты.

Для получения дополнительной информации сопоставьте URL-адреса.

Счастливого кодирования!

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

1. могу ли я указать Uri в MarkerOptions? Карты Google открываются кнопкой по умолчанию (см. 1-е Изображение), и я не знаю, где я могу нажать на эту кнопку, не так ли?

2. Я не совсем уверен в том, чего вы хотите достичь. Но если вы просто хотите открыть карты Google по нажатию кнопки, вы можете создать кнопку и обработать ее щелчок, в onClickListener котором вы можете запустить процесс открытия карт Google.

Ответ №2:

здесь мы устанавливаем прослушиватель для выполнения того, что мы хотим

 this.map.setOnMarkerClickListener(marker -> {
        String uri = linkMap.get(marker);//get your link
        View openInGoogleButton = findOpenInGoogleButton(root);

        if (uri == null || openInGoogleButton == null) return false;

        openInGoogleButton.setOnClickListener(view -> {
            final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
            intent.setPackage("com.google.android.apps.maps");
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            fragmentActivity.startActivity(intent);
        });

        return false;
    });
  

способ поиска открытой кнопки на панели инструментов Google

 private View findOpenInGoogleButton(View v) {
    View openInGoogleButton = null;

    if (v instanceof ViewGroup) {
        ViewGroup vg = (ViewGroup) v;
        for (int i = 0; i < vg.getChildCount(); i  ) {
            openInGoogleButton = findOpenInGoogleButton(vg.getChildAt(i));
            if (openInGoogleButton != null) {
                break;
            }
        }
    } else if (v.getTag() != null
            amp;amp; "GoogleMapOpenGmmButton".equalsIgnoreCase(v.getTag().toString())) {
        openInGoogleButton = v;
    }

    return openInGoogleButton;
}