توضّح لك هذه الصفحة كيفية التحكّم في سلوك التصادم لعلامة.
ضبط سلوك الاصطدام لعلامة
يتحكّم سلوك الاصطدام في كيفية عرض العلامة إذا اصطدمت (تداخلت) بعلامة أخرى. تُحدِّد طريقة إنشاء العلامات المتقدّمة طريقة عمل سلوك الاصطدام:
تُعرف العلامات المتقدّمة التي تم إنشاؤها باستخدام
BitmapDescriptorFactory
بعلامات الصور المخصّصة. يتم رسم هذه العلامات بواسطة الخريطة الأساسية.تُعرف جميع العلامات المتقدّمة الأخرى، بما في ذلك تلك التي تم إنشاؤها باستخدام
AdvancedMarkerOptions.iconView()
، باسم علامات العرض ويتم رسمها على طبقة فوق الخريطة الأساسية.
لضبط سلوك الاصطدام، اضبط
AdvancedMarkerOptions.collisionBehavior
على أحد الخيارَين التاليَين:
CollisionBehavior.REQUIRED
: (الإعداد التلقائي) عرض العلامة دائمًا بغض النظر عن التصادمCollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
يجب عرض العلامة دائمًا بغض النظر عن حدوث تداخل، وإخفاء أيOPTIONAL_AND_HIDES_LOWER_PRIORITY
علامات أو تصنيفات قد تتداخل مع العلامة.CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY
عرض العلامة فقط إذا لم تكن تتداخل مع علامات أخرىإذا تداخلت علامتَان لوحة رسومات، يتم عرض العلامة التي تملك قيمة
zIndex
أعلى. إذا كانتا تحملان السمةzIndex
نفسها، يتم عرض الصورة التي تظهر في موضع أسفل الشاشة عموديًا. لمزيد من المعلومات عنzIndex
، اطّلِع على المؤشر فهرس z.إذا تداخلت علامتا عرض، يتم عرض العلامة التي تحتوي على قيمة
zIndex
أعلى. إذا كانت العلامتان تحملان القيمة نفسها، تتراكب العلامة التي تم إنشاؤها أخيرًا على أي علامات تم إنشاؤها قبلها.zIndex
بما أنّه يتم رسم علامات المشاهدة على طبقة فوق علامات الصور المخصّصة، تتراكب علامات المشاهدة مع علامات الصور المخصّصة. لذلك، يجب محاولة استخدام علامات من النوع نفسه للتحكّم بشكل أفضل في التداخل.
يوضِّح المثال التالي كيفية ضبط سلوك التصادم لعلامة:
Kotlin
// Collision behavior can only be changed in the AdvancedMarkerOptions object. // Changes to collision behavior after a marker has been created are not possible val collisionBehavior: Int = CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL val advancedMarkerOptions: AdvancedMarkerOptions = AdvancedMarkerOptions() .position(LatLng(10.0, 10.0)) .collisionBehavior(collisionBehavior) val marker: Marker = map.addMarker(advancedMarkerOptions) ?: error("Failed to add marker")
Java
// Collision behavior can only be changed in the AdvancedMarkerOptions object. // Changes to collision behavior after a marker has been created are not possible int collisionBehavior = AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL; AdvancedMarkerOptions options = new AdvancedMarkerOptions() .position(new LatLng(10.0, 10.0)) .collisionBehavior(collisionBehavior); Marker marker = map.addMarker(options);