Tạo điểm đánh dấu bằng chế độ xem tuỳ chỉnh

Hình ảnh 3D của Thành phố New York có Toà nhà Empire State với 3 điểm đánh dấu kỹ thuật số tuỳ chỉnh lơ lửng phía trên, bao gồm cả một chú khỉ đột hoạt hình có nhãn

Bạn có thể sử dụng MarkerView để kết xuất các hệ phân cấp View tuỳ chỉnh của Android dưới dạng điểm đánh dấu trên bản đồ 3D. Điểm đánh dấu chế độ xem tuỳ chỉnh cho phép bạn hiển thị các bố cục của giao diện người dùng đa dạng, tiện ích tương tác và ảnh động chế độ xem được neo vào toạ độ địa lý.

Thêm điểm đánh dấu chế độ xem tuỳ chỉnh

Để thêm điểm đánh dấu chế độ xem tuỳ chỉnh vào bản đồ, hãy tạo một MarkerViewOptions thực thể, định cấu hình vị trí của thực thể đó bằng setPosition bằng cách sử dụng đối tượng LatLngAltitude và cung cấp View tuỳ chỉnh của Android bằng setContent. Sau đó, hãy chuyển các tuỳ chọn đến addMarkerView trên thực thể GoogleMap3D.

Nếu bạn không cung cấp chế độ xem cho setContent, SDK sẽ tạo và kết xuất PinViewmặc định.

// 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)

Tuỳ chỉnh PinView mặc định

Thay vì tạo View tuỳ chỉnh hoàn toàn cho Android, bạn có thể kết xuất một ghim tuỳ chỉnh bằng cách tạo PinView với PinConfiguration tuỳ chỉnh (hoặc cập nhật thực thể hiện có bằng setPinConfiguration) và chuyển thực thể đó đến setContent.

// 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)

Xử lý các lượt tương tác và ảnh động

Vì a MarkerView gói một View của Android, nên bạn có thể đính kèm trình theo dõi lượt nhấp tiêu chuẩn và ảnh động chế độ xem trực tiếp vào chế độ xem do getContenttrả về.

Ngoài ra, MarkerView triển khai Anchorable, cho phép bạn neo Popover vào chế độ xem điểm đánh dấu bằng addPopover:

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

Định cấu hình độ cao và hành vi va chạm

Bạn có thể tuỳ chỉnh cách a MarkerView được định vị theo chiều dọc và cách tương tác với các nhãn hoặc điểm đánh dấu bản đồ chồng chéo:

Khả năng tiếp cận và xoá

Bạn chịu trách nhiệm định cấu hình các thuộc tính hỗ trợ tiếp cận (chẳng hạn như contentDescription) trên View tuỳ chỉnh của Android được cung cấp cho setContent.

Để xoá MarkerView khỏi bản đồ, hãy gọi remove:

markerView?.remove()