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

Автоматически отображать панель инструментов для Google Карт

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

Нравится это:-)... enter image description here Я не могу понять, как это сделать.

Я пробовал:

// create marker
MarkerOptions marker = new MarkerOptions().position(
        new LatLng(latitude, longitude)).title("title");

// adding marker
googleMap.addMarker(marker).showInfoWindow();
googleMap.getUiSettings().setMapToolbarEnabled(true);

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

Нравится это:-(... enter image description here Я немного застрял в идеях?

4b9b3361

Ответ 1

Наложение, которое появляется при щелчке маркера, создается и уничтожается на месте неявно. Вы не можете вручную показать это (пока).

Если у вас должна быть эта функция, вы можете создать наложение поверх вашей карты с помощью 2 ImageViews и вызвать соответствующие намерения при нажатии:

// Directions
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(
        "http://maps.google.com/maps?saddr=51.5, 0.125&daddr=51.5, 0.15"));
startActivity(intent);
// Default google map
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(
        "http://maps.google.com/maps?q=loc:51.5, 0.125"));
startActivity(intent);

Примечание: вам необходимо изменить координаты на основе Marker getPosition() и местоположения пользователя.

Теперь, чтобы скрыть оверлей по умолчанию, все, что вам нужно сделать, это вернуть true в OnMarkerClickListener. Хотя вы потеряете возможность показывать InfoWindows и центральную камеру на маркере, вы можете имитировать это достаточно просто:

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker marker) {
        marker.showInfoWindow();
        mMap.animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition()));
        return true;
    }
});

Ответ 2

Цитирование документа:

В карте в режиме Lite панель инструментов сохраняется независимо от пользовательской действия. На полностью интерактивной карте панель инструментов открывается, когда пользователь удаляет маркер и снова выворачивается, когда маркер больше не в фокусе.

Считается, что нет возможности сохранить панель инструментов в вашем случае со своей интерактивной карты. Вы можете попробовать использовать Lite-режим, если это необходимо: https://developers.google.com/maps/documentation/android/lite

Также смотрите на свой код:

// create marker
MarkerOptions marker = new MarkerOptions().position(
        new LatLng(latitude, longitude)).title("title");

// adding marker
googleMap.addMarker(marker).showInfoWindow();
googleMap.getUiSettings().setMapToolbarEnabled(true);

Самая последняя строка: googleMap.getUiSettings().setMapToolbarEnabled(true); является избыточной, если вы явно не устанавливаете ее в false заранее. Док утверждает:

Устанавливает предпочтение необходимости включения панели инструментов карты или отключен. Если включено, пользователи будут видеть панель с различными контекстно-зависимые действия, в том числе "открыть эту карту на Картах Google" app "и" найти маршруты к выделенному маркеру на Картах Google приложение.

По умолчанию панель инструментов карты включена.

Ссылка: https://developer.android.com/reference/com/google/android/gms/maps/UiSettings.html#setMapToolbarEnabled(boolean)

Надеюсь, что это поможет.

Ответ 4

У меня была аналогичная проблема..... если вы в порядке, не позволяя пользователю просматривать на карте и просто сосредоточиться на своем маркере, вы можете использовать lite-mode map.... Цитата из документации

В карте lite-mode панель инструментов сохраняется независимо от действий пользователя. На полностью интерактивной карте панель инструментов скользит, когда пользователь удаляет маркер и снова появляется, когда маркер больше не находится в фокусе.

Снова из docs

Также по умолчанию, когда пользователь набирает карту, API запускает мобильное приложение Google Maps. Вы можете переопределить это, используя GoogleMap.setOnMapClickListener(), чтобы настроить свой собственный слушатель. Вы также можете отключить события кликов на карте, вызвав setClickable() в представлении, которое содержит MapView или MapFragment.

Ответ 5

Показывать диалоговое окно "Диалоговое окно" вместо информационного окна и обрабатывать все в нем.

@Override
public boolean onMarkerClick(Marker marker) {
    FragmentManager fm = getSupportFragmentManager();
    DialogFragment markerWebView = DialogFragment();
    mMap.animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition()));
    markerWebView.show(fm, "fragment_marker");
    return true;
}

ИЛИ

используйте маркерные клики, чтобы включить/выключить наложение с помощью факсимильной кнопки карты Google

mMap.setOnMarkerClickListener(this);
mMap.setOnInfoWindowClickListener(this);


@Override
public boolean onMarkerClick(Marker marker) {
    //here turn on the overlays for nav turns etc. for this marker.
    return false
}

@Override
public void onInfoWindowClick(Marker marker) {
    //here turn off the overlays for nav turns etc.
    marker.hideInfoWindow();
}

Ответ 6

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

@Override
public void markerIntentButtonShow(Marker marker) {
      //setvisible(true) to your side buttons or call some Intent
      Intent i = new Intent(getActivity(), MarkerViewDetails.class);
      i.putExtra("marker_snippet", marker.getSnippet());
      startActivity(i);
}

и вызовите метод в своем прослушивателе кликов

        googleMap
                .setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

                    @Override
                    public void onInfoWindowClick(Marker marker) {

                            markerIntentButtonShow(marker);
                    }
                });

и в вашем onCreateView

MarkerOptions marker = new MarkerOptions().position(
        new LatLng(latitude, longitude)).title("title");
googleMap.addMarker(marker).showInfoWindow();
markerIntentButtonShow(marker);

Ответ 7

Для панели инструментов, выделенной красным цветом, ее можно отключить с помощью метода setMapToolbarEnabled() в UISettings

Из документации:

Устанавливает предпочтение необходимости включения панели инструментов карты или отключен. Если включено, пользователи будут видеть панель с различными контекстно-зависимые действия, в том числе "открыть эту карту на Картах Google" app "и" найти маршруты к выделенному маркеру на Картах Google приложение.

Пример кода для отключения двух кнопок:

//Disable Map Toolbar:
mMap.getUiSettings().setMapToolbarEnabled(false);

На всякий случай вы также задаетесь вопросом о кнопках масштабирования, вы можете отключить их следующим образом:

mMap.getUiSettings().setZoomControlsEnabled(false);