إضافة علامة إلى خريطة

اختيار النظام الأساسي: Android‏ iOS‏ JavaScript‏

علامات على خريطة ثلاثية الأبعاد

يوضّح نموذج الرمز البرمجي التالي كيفية إضافة علامة أساسية إلى خريطة ثلاثية الأبعاد من خلال استدعاء الطريقة addMarker. لاستخدام نموذج الرمز البرمجي هذا، اتّبِع التعليمات الواردة في الإعداد وإضافة خريطة ثلاثية الأبعاد إلى تطبيقك لإعداد مشروعك على Android Studio باستخدام خريطة ثلاثية الأبعاد أساسية. بعد ذلك، أضِف الرمز التالي إلى ملف MainActivity.kt:

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

...

// Add to the onMap3DViewReady method, after the googleMap3D object has been initialized
googleMap3D.setMapMode(Map3DMode.SATELLITE)

googleMap3D.setCamera(
    camera {
        center = latLngAltitude {
            latitude = 52.51974795
            longitude = 13.40715553
            altitude = 150.0
        }
        heading = 252.7
        tilt = 79.0
        range = 1500.0
    }
)

// Add a marker using absolute altitude positioning
googleMap3D.addMarker(markerOptions {
    position = latLngAltitude {
        latitude = 52.519605780912585
        longitude = 13.406867190588198
        altitude = 150.0
    }
    label = "Absolute (150m)"
    altitudeMode = AltitudeMode.ABSOLUTE
    isExtruded = true
    isDrawnWhenOccluded = true
    collisionBehavior = CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
})

الاستماع إلى الأحداث الناتجة عن النقر على العلامات

للاستماع إلى أحداث النقر على علامة، استدعِ الدالة setClickListener على عنصر العلامة. يوضّح المثال التالي كيفية ضبط أداة معالجة نقرات على علامة:

  marker.setClickListener {
      lifecycleScope.launch(Dispatchers.Main) {
          Toast.makeText(this@MarkersActivity, "Clicked on marker: ${marker.label}", Toast.LENGTH_SHORT)
              .show()
      }
  }
  

يُرجى العِلم أنّ معالج النقرات لا يتم تنفيذه في سلسلة التعليمات الرئيسية (أو سلسلة التعليمات الخاصة بواجهة المستخدم). إذا كنت تريد إجراء تغييرات على واجهة المستخدم (مثل عرض رسالة Toast)، عليك التبديل إلى سلسلة التعليمات البرمجية الرئيسية. بالنسبة إلى Kotlin، يمكنك إجراء ذلك باستخدام lifecycleScope.launch(Dispatchers.Main).