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