it-swarm.com.ru

Всегда показывать название маркера карты в Android

Я добавляю маркер по умолчанию в GoogleMap следующим образом:

GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.editMapMap)).getMap();

MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(currentLocation.getCoordinate());
markerOptions.title(Utils.getLocationString(currentLocation.getCoordinate()));
markerOptions.snippet("Blah");

locationMarker = map.addMarker(markerOptions);
locationMarker.setDraggable(true);

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

35
Misha

Это очень просто:

locationMarker.showInfoWindow();
87
JerabekJakub

Есть два способа показать и скрыть маркеры. Возвращаемое логическое значение просто предотвращает выполнение поведения по умолчанию (false) или допускает его (true). Другими словами, он информирует систему о том, использовали ли вы событие или нет. См. Справочник по API Google .

private GoogleMap.OnMarkerClickListener onMarkerClickedListener = new GoogleMap.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker marker) {
        if (marker.isInfoWindowShown()) {
            marker.hideInfoWindow();
        } else {
            marker.showInfoWindow();
        }
        return true;
    }
};

mGoogleMap.setOnMarkerClickListener(onMarkerClickedListener);
4
shredder

используйте showInfoWindow() и добавьте маркер, как показано ниже.

Marker marker = mMap.addMarker(new MarkerOptions().position(currentPosition).title("Your text"));
marker.showInfoWindow();
3
Shailesh

Просто верните false для onMarkerClickListener, если вы вернете true, отобразится infoWindow.

Чтобы скрыть заголовок при нажатии на маркер:

map.setOnMarkerClickListener(this);
...

@Override
public boolean onMarkerClick(Marker arg0) {     
  Log.i(TAG,"marker arg0 = "+arg0);               
  return false;
}

Если мы вернем true, заголовок будет отображаться, иначе, если мы вернем false, заголовок не будет отображаться.

3
sandeepmaaram

Подожди, но вот мой ответ:

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

«Информационное окно позволяет отображать информацию пользователю, когда он Нажимает на маркер.Одновременно отображается только одно информационное окно. Если пользователь Нажимает на маркер , текущее информационное окно будет закрыто и появится новое информационное окно. Обратите внимание, что если пользователь нажимает на маркер, который в данный момент отображает информационное окно, это информационное окно закрывается и повторно открывает «.

1
Pedro Massango

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

Информационные окна не будут работать для моего случая, и я хотел, чтобы заголовки отображались только при наличии места, потенциально скрываясь, если не хватало места для отображения, чтобы они не перекрывали друг друга.

Я не нашел решения в интернете, поэтому закатал рукава и сделал эту библиотеку, которая решает мою проблему, надеюсь, она поможет и другим:

https://github.com/androidseb/Android-google-maps-floating-marker-titles

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

 preview

0
androidseb