Я пытаюсь реализовать пользовательский GoogleMap.InfoWindowAdapter, который отображается при нажатии на маркер. Информационное окно выглядит нормально, но его положение по умолчанию выше маркера. Есть ли способ изменить положение информационного окна и сделать его отображаемым под маркером?
Это фрагмент моего класса Fragment, в который загружены маркеры: -
MapFragment.kt
private fun displayMarkersOnMap(markerData: MarkerData) {
val markerOptions = MarkerOptions().position(hazard.getLatLng())
.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))
val marker = googleMap.addMarker(markerOptions)
marker.tag = markerData
googleMap.setInfoWindowAdapter(MarkerInfoView(activity!!))
}
Это класс пользовательского информационного окна
MarkerInfoView.kt
class MarkerInfoView(val context: Context) : GoogleMap.InfoWindowAdapter {
@SuppressLint("InflateParams")
override fun getInfoContents(marker: Marker?): View? {
val view =
(context as Activity).layoutInflater.inflate(R.layout.layout_info_window, null)
val markerData: MarkerData = marker?.tag as MarkerData
view.tvTitle.text = markerData.title
view.tvLocation.text = markerData.location
view.tvDescription.text = markerData.description
return view
}
override fun getInfoWindow(marker: Marker?): View? {
return null
}
}
Я пытался использовать markerOptions.setInfoWindowAnchor()
но это только меняет положение якоря на маркере для окна.
Я также пытался реализовать пользовательский вид и добавить его в качестве дочернего вида в MapView, но вид не является интерактивным с картой и является статичным для той же позиции, даже если карта перемещена.