Özel görünümlerle işaretçi oluşturma

New York City'nin 3D görüntüsünde Empire State Binası ve üzerinde üç özel dijital işaretçi yer alıyor. Bu işaretçilerden biri, "King Kong" yazan bir çizgi film goril.

Özel Android View hiyerarşilerini 3D haritada işaretçi olarak oluşturmak için MarkerView kullanabilirsiniz. Özel görünüm işaretçileri, coğrafi koordinatlara sabitlenmiş zengin kullanıcı arayüzü yerleşimleri, etkileşimli widget'lar ve görünüm animasyonları görüntülemenize olanak tanır.

Özel görünüm işaretçisi ekleme

Haritanıza özel görünüm işaretçisi eklemek için bir MarkerViewOptions örneği oluşturun, LatLngAltitude nesnesi kullanarak konumunu setPosition ile yapılandırın ve setContent kullanarak özel Android View öğenizi sağlayın. Ardından, seçenekleri addMarkerView GoogleMap3D örneğinizde iletin.

setContent için bir görünüm sağlamazsanız SDK, varsayılan bir PinView oluşturur ve oluşturur.

// Add imports
import android.widget.TextView
import com.google.android.gms.maps3d.model.MarkerViewOptions
import com.google.android.gms.maps3d.model.latLngAltitude

// Create a custom Android View
val badgeView = TextView(context).apply {
    text = "Empire State Building"
    contentDescription = "Marker for Empire State Building"
    setPadding(24, 12, 24, 12)
}

// Configure MarkerViewOptions and add the marker view to the map
val options = MarkerViewOptions().apply {
    position = latLngAltitude {
        latitude = 40.7484
        longitude = -73.9857
        altitude = 100.0
    }
    content = badgeView
}

val markerView = googleMap3D.addMarkerView(options)

Varsayılan PinView'u özelleştirme

Tamamen özel bir Android View oluşturmak yerine, özel bir PinConfiguration ile PinView oluşturarak (veya mevcut bir örneği setPinConfiguration ile güncelleyerek) ve bunu setContent'e ileterek özelleştirilmiş bir raptiye oluşturabilirsiniz.

// Add imports
import android.graphics.Color
import com.google.android.gms.maps3d.model.MarkerViewOptions
import com.google.android.gms.maps3d.model.PinView
import com.google.android.gms.maps3d.model.latLngAltitude
import com.google.android.gms.maps3d.model.pinConfiguration

// Create a customized PinView
val customPinView = PinView(context, pinConfiguration {
    backgroundColor = Color.BLUE
    borderColor = Color.WHITE
})

// Configure MarkerViewOptions and add the marker view to the map
val options = MarkerViewOptions().apply {
    position = latLngAltitude {
        latitude = 40.7484
        longitude = -73.9857
        altitude = 100.0
    }
    content = customPinView
}

val markerView = googleMap3D.addMarkerView(options)

Etkileşimleri ve animasyonları işleme

MarkerView, Android View'ü sardığı için standart tıklama işleyicileri ekleyebilir ve getContent tarafından döndürülen görünümde doğrudan görünüm animasyonlarını görüntüleyebilirsiniz.

Ayrıca, MarkerView, Anchorable'yi uygular. Bu sayede, addPopover kullanarak işaretçi görünümüne bir Popover sabitleyebilirsiniz:

markerView?.content?.setOnClickListener { view ->
    // Animate the view when clicked
    view.animate().rotationBy(90f).setDuration(300).start()
}

Rakım ve çakışma davranışını yapılandırma

MarkerView öğesinin dikey olarak nasıl konumlandırılacağını ve çakışan harita etiketleri veya işaretçileriyle nasıl etkileşim kuracağını özelleştirebilirsiniz:

Erişilebilirlik ve kaldırma

setContent için sağlanan özel Android View üzerinde contentDescription gibi erişilebilirlik özelliklerini yapılandırmak sizin sorumluluğunuzdadır.

Haritadan bir MarkerView öğesini kaldırmak için remove yöntemini çağırın:

markerView?.remove()