Нажмите на маркер -> getInfoContents не показывает мой пользовательский виджет - PullRequest
0 голосов
/ 21 февраля 2020

Android студия:

реализация 'com.google. android .gms: play-services-maps: 17.0.0'

в моей деятельности:

import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback

private lateinit var mMap: GoogleMap

 mMap.setInfoWindowAdapter(object : GoogleMap.InfoWindowAdapter {
            override fun getInfoWindow(marker: Marker): View? {
                return null
            }

            // Important! Not work with "androidx.constraintlayout.widget.ConstraintLayout"
            override fun getInfoContents(marker: Marker): View? {
                val markerLatLng = marker.position
                val selectGazStation =
                    gazStationsList.first { it.latitude == markerLatLng.latitude && it.longitude == markerLatLng.longitude }
                Debug.d(TAG, "getInfoContents: selectGazStation = $selectGazStation")
                val agentSummaryInfoWidget = AgentSummaryInfoWidget(application, selectGazStation)
                return agentSummaryInfoWidget
            }
        })
    }

Здесь мой пользовательский виджет AgentSummaryInfoWidget

class AgentSummaryInfoWidget(context: Context, selectGazStation: GazStation) :
    LinearLayout(context) {

    init {
        init(context, selectGazStation)
    }

    companion object {

        private val TAG = AgentSummaryInfoWidget::class.java.name
    }

    private fun init(context: Context, selectGazStation: GazStation) {
        val mapMarkerInfoContentLayoutBinding =
            MapMarkerInfoContentLayoutBinding.inflate(LayoutInflater.from(context));
        mapMarkerInfoContentLayoutBinding.addressValueTextView.setText(selectGazStation.address)
        var workingHours = "24/24"
        if (!selectGazStation.workingHours?.contains("NON-STOP", true)!!) {
            workingHours = selectGazStation.workingHours!!
        }
        mapMarkerInfoContentLayoutBinding.workingHoursValueTextView.setText(workingHours)
        mapMarkerInfoContentLayoutBinding.phoneValueTextView.setText(selectGazStation.phone)
    }
}

Здесь xml map_marker_info_content_layout:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>

    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/titleContainerLayout"
            android:layout_width="match_parent"
            android:layout_height="@dimen/min_height"
            android:layout_marginStart="@dimen/half_default_margin"
            android:layout_marginTop="@dimen/default_margin"
            android:layout_marginEnd="@dimen/half_default_margin"
            android:background="@drawable/bottom_border_bg"
            android:orientation="vertical">

            <TextView
                android:id="@+id/titleTextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/half_default_margin"
                android:text="Rompetrol"
                android:textColor="@android:color/black"
                android:textSize="15sp" />

            <TextView
                android:id="@+id/stateTtextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/half_default_margin"
                android:text="@string/open"
                android:textColor="@android:color/holo_green_light"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="parent" />
        </LinearLayout>


        <LinearLayout
            android:id="@+id/agentInfoContainer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bottom_border_bg"
            android:orientation="vertical">

            <LinearLayout
                android:id="@+id/containerAddress"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/half_default_margin"
                android:layout_marginTop="@dimen/half_default_margin"
                android:layout_marginEnd="@dimen/half_default_margin">

                <TextView
                    android:id="@+id/addressLabelTextView"
                    style="@style/mapMarkerInfoItemLabelTextStyle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="@dimen/half_default_margin"
                    android:layout_marginEnd="@dimen/half_default_margin"
                    android:text="@string/address_colon" />

                <TextView
                    android:id="@+id/addressValueTextView"
                    style="@style/mapMarkerInfoItemLabelTextStyle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="@dimen/half_default_margin"
                    android:gravity="end" />

            </LinearLayout>

            <LinearLayout
                android:id="@+id/containerWorkingHours"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/half_default_margin"
                android:layout_marginTop="@dimen/half_default_margin"
                android:layout_marginEnd="@dimen/half_default_margin">

                <TextView
                    android:id="@+id/workingHoursLabelTextView"
                    style="@style/mapMarkerInfoItemLabelTextStyle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="@dimen/half_default_margin"
                    android:layout_marginEnd="@dimen/half_default_margin"
                    android:text="@string/working_hours_colon" />

                <TextView
                    android:id="@+id/workingHoursValueTextView"
                    style="@style/mapMarkerInfoItemLabelTextStyle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="@dimen/half_default_margin"
                    android:gravity="end"
                    app:layout_constraintEnd_toEndOf="parent" />

            </LinearLayout>

            <LinearLayout
                android:id="@+id/containerPhon"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/half_default_margin"
                android:layout_marginTop="@dimen/half_default_margin"
                android:layout_marginEnd="@dimen/half_default_margin"
                android:layout_marginBottom="@dimen/half_default_margin">

                <TextView
                    android:id="@+id/phoneLabelTextView"
                    style="@style/mapMarkerInfoItemLabelTextStyle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="@dimen/half_default_margin"
                    android:layout_marginEnd="@dimen/half_default_margin"
                    android:text="@string/phone_colon" />

                <TextView
                    android:id="@+id/phoneValueTextView"
                    style="@style/mapMarkerInfoItemLabelTextStyle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="@dimen/half_default_margin"
                    android:gravity="end" />

            </LinearLayout>

        </LinearLayout>

        <LinearLayout
            android:id="@+id/containerServices"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/half_default_margin"
            android:layout_marginTop="@dimen/half_default_margin"
            android:layout_marginEnd="@dimen/half_default_margin"
            android:layout_marginBottom="@dimen/half_default_margin"
            android:orientation="vertical">

            <TextView
                android:id="@+id/servicesLabelTextView"
                style="@style/mapMarkerInfoItemLabelTextStyle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/half_default_margin"
                android:layout_marginEnd="@dimen/half_default_margin"
                android:text="@string/services_colon" />

            <LinearLayout
                android:id="@+id/gazStationsServicesContainer"
                android:layout_width="match_parent"
                android:layout_height="64dp"
                android:gravity="start|center"
                android:orientation="horizontal">

                <com.yarolegovich.discretescrollview.DiscreteScrollView
                    android:id="@+id/gazStationServiceDiscreteScrollView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:dsv_orientation="horizontal" />

            </LinearLayout>

        </LinearLayout>

    </LinearLayout>

</layout>

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

enter image description here

1 Ответ

0 голосов
/ 21 февраля 2020

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

...