توضّح لك هذه الصفحة كيفية التحكّم في سلوك التصادم لعلامة.
ضبط سلوك التعارض لعلامة
يتحكّم سلوك التعارض في طريقة عرض العلامة إذا تعارضت (تداخلت) مع علامة أخرى. تحدّد طريقة إنشاء علامات متقدّمة طريقة عمل سلوك التصادم:
يُشار إلى العلامات المتقدّمة التي تم إنشاؤها باستخدام
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-index الخاصة بالعلامة.إذا تداخلت علامتان عرض، سيتم عرض العلامة التي تتضمّن قيمة
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);