Google Maps v2 Маркер zOrdering – установить в начало
Я знаю, что в этой теме есть несколько тем, но я все же нашел достаточно хорошее решение.
Мне НЕОБХОДИМО разместить маркер поверх всех других маркеров. Как мне это сделать?
Я попытался добавить этот маркер до и после всех других маркеров, однако упорядочение, кажется, происходит от нижней (передней) до верхней (назад) на карте. Это неприемлемо, поскольку я хочу сосредоточиться на маркере, который находится перед всеми маркерами.
- Как просмотреть базу данных SQLite на устройстве Android?
- Вес планшета Android
- Могу ли я использовать onScrollListener для ScrollView?
- Доступны ли значения, определенные в MANIFEST.MF программно?
- Не удалось добавить окно [email protected] - разрешено разрешение для этого типа windows
Я знаю, что многоугольники могут быть zOrdered, но я бы предпочел красивую графику!
Фактически вы не можете заказать Polygon над маркером!
«Порядок, в котором этот многоугольник рисуется по отношению к другим оверлеям, включая Polylines, GroundOverlays и TileOverlays, но не Markers. Наложение с большим z-индексом нарисовано поверх наложений с меньшими z-индексами. Порядок наложений с то же значение z-индекса произвольно. Значение по умолчанию равно 0. ” – https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/Polygon
У кого-нибудь есть идеи по этому поводу?
- Как отображать активность, когда экран заблокирован?
- Устройства Android с разной высотой принимают ту же папку макета
- Создать папку в Android
- Android: Как работает Bitmap recycle ()?
- Контекстные стили Actionbar
- Исправлено столбец IOException, записывающий сериализуемый объект getactivity ()
- Расчет расстояния от моего местоположения до места назначения в андроиде
- Android: обратное геокодирование - getFromLocation
Ответ Эйдена Фрая работает, если вы действительно показываете InfoWindow. Если вы этого не сделаете, маркер не выйдет на передний план. Вот хак, чтобы он все равно вышел на фронт:
Создайте пользовательский InfoWindowAdapter, который отображает информационное окно 0dp:
public class MapWindowAdapter implements GoogleMap.InfoWindowAdapter { private Context context = null; public MapWindowAdapter(Context context) { this.context = context; } // Hack to prevent info window from displaying: use a 0dp/0dp frame @Override public View getInfoWindow(Marker marker) { View v = ((Activity) context).getLayoutInflater().inflate(R.layout.no_info_window, null); return v; } @Override public View getInfoContents(Marker marker) { return null; } }
Вот код макета:
Когда вы настроите свою карту, установите адаптер и пользовательский InfoWindowAdapter и OnMarkerClickListener (используя showInfoWindow и верните true, как сообщается AIden Fry):
mMap.setInfoWindowAdapter(new MapWindowAdapter(this)); //Call showInfoWindow to put marker on top of others. myMarker.showInfoWindow();
Это не красиво, но я не нашел другого способа справиться с z-индексацией без использования информационных окон.
Это было добавлено в Google Play Services 9.2 ( 27 июня 2016 г. )
Новый
MarkerOptions.zIndex()
устанавливает порядок стека маркера по отношению к другим маркерам на карте. Подробнее о маркерных z-индексах и о влиянии z-индекса на события click. ( Выпуск 4688 )
Хотя это не идеальное решение! Я выяснил, как показать выбранный (постукиваемый) маркер над всеми другими маркерами, потребляя событие onMarkerClick. Возrotation TRUE будет потреблять это событие, поэтому нам нужно сделать showInfoWindow и увеличить масштаб до центра
@Override public boolean onMarkerClick(Marker marker) { //Manually open the window marker.showInfoWindow(); //Animate to center sMapFrag_v2.getMap().animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition()); //Consume the method return true; }