Pop-ups

Plattform auswählen: Android iOS JavaScript

Bild einer Markierung mit einem Pop-over-Textfenster, das an der Markierung über der Golden Gate Bridge angebracht ist, mit einer allgemeinen Beschreibung der Brücke

In einem Popover werden Inhalte (in der Regel Text oder Bilder) in einem Infoblasenfenster über der Karte an einem bestimmten Ort angezeigt. Das Pop-over besteht aus einem Inhaltsbereich und einem Hinweisstrich. Der Hinweisstrich zeigt auf eine bestimmte Position auf der Karte.

In der Regel wird ein Pop-over mit einer Markierung verknüpft. Sie können es aber auch mit einer bestimmten LatLng-Koordinate verknüpfen.

Pop-over hinzufügen

Um ein Pop-over hinzuzufügen, erstellen Sie ein Popover-Objekt und legen Sie seine Optionen fest, einschließlich Position und Höhenmodus. Die Position ist ein LatLng-Objekt, das Breiten-, Längen- und Höhenangaben enthält, die bestimmen, wo das Pop-over angezeigt wird. Wenn die Verankerung an einer Markierung erfolgt, wird stattdessen die Position der Markierung verwendet. Sie können auch festlegen, wie die Höhe interpretiert wird, indem Sie den Höhenmodus festlegen.

Der Inhalt eines Pop-overs muss in einem AndroidView enthalten sein. Pop-overs sind standardmäßig scrollbar und haben eine vordefinierte maximale Höhe.

Pop-over an einer Markierung verankern

Sie können Pop-overs an Markierungen verankern. Wenn Sie ein Pop-over hinzufügen, das an einem Marker verankert ist, müssen Sie es einem Marker-Objekt zuordnen.

class MapManager(private val map: MapView) {

    /**
     * Adds a popover anchored to a marker.
     * @param context The Context required to instantiate UI views.
     */
    fun addPopoverToMarker(context: Context) {
        // 1. Create a marker
        val markerOptions = markerOptions {
            position = latLngAltitude {
                latitude = 37.422
                longitude = -122.084
                altitude = 0.0
            }
        }

        val marker = map.addMarker(markerOptions) ?: return

        // 2. Create the custom view using the passed-in context
        val textView = TextView(context).apply {
            text = context.getString(R.string.popover_hello)
            setPadding(16, 16, 16, 16)
            setBackgroundColor(Color.WHITE)
            setTextColor(Color.BLACK)
        }

        // 3. Configure and display the popover
        val options = popoverOptions {
            content = textView
            positionAnchor = marker
            altitudeMode = AltitudeMode.RELATIVE_TO_GROUND
        }

        val popover = map.addPopover(options)
        popover.show()
    }
}

Konfiguriertes Pop-over hinzufügen

Im folgenden Beispiel wird ein Pop-over hinzugefügt, das automatisch geschlossen wird, wenn der Nutzer außerhalb des Pop-overs tippt. Außerdem wird nicht automatisch zu neu geöffneten Pop-overs geschwenkt:

/**
 * Adds a configured popover (auto-close enabled, auto-pan disabled).
 * @param context The Context used to inflate the UI and retrieve string resources.
 */
fun addConfiguredPopover(context: Context) {
    // 1. Initialize the view with the explicit context
    val textView = TextView(context).apply {
        text = context.getString(com.example.snippets.common.R.string.popover_info)
        setPadding(12, 12, 12, 12)
        setBackgroundColor(Color.WHITE)
        setTextColor(Color.BLACK)
    }

    // 2. Configure popover behavior
    val options = popoverOptions {
        content = textView
        // Setting a fixed coordinate anchor
        positionAnchor = latLngAltitude {
            latitude = 0.0
            longitude = 0.0
            altitude = 0.0
        }
        autoCloseEnabled = true // Closes automatically when the map is tapped elsewhere
        autoPanEnabled = false  // Map camera remains stationary when popover appears
    }

    // 3. Add to the map instance
    map.addPopover(options)
}