Ö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:
- Yükseklik modu:
setAltitudeModeMarkerViewOptionsileAltitudeModesabitinde arama yapın. Varsayılan olarak,MarkerViewOptionsAltitudeMode.CLAMP_TO_GROUNDkullanır. - Çakışma davranışı: Bir
CollisionBehaviorsabitiyle (varsayılan olarakCollisionBehavior.REQUIRED)setCollisionBehavioryöntemini çağırın ve işaretçiler çakıştığında görüntüleme önceliğini belirtmek içinsetCollisionPriorityyöntemini kullanın.
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()