توفّر لك Google Maps API for Android بعض الطرق البسيطة لإضافة أشكال إلى خرائطك من أجل تخصيصها لتطبيقك.
Polyline
هي سلسلة من خطوط الخطوط المتصلة التي يمكنها تشكيل أي شكل تريده ويمكن استخدامه لوضع علامة على المسارات والمسارات على الخريطة.Polygon
هو شكل محجوز يمكن استخدامه لوضع علامة على المناطق على الخريطة.Circle
هو إسقاط دقيق جغرافيًا لدائرة على سطح الأرض مرسومة على الخريطة.
بالنسبة إلى كل هذه الأشكال، يمكنك تخصيص مظهرها عن طريق تغيير عدد من الخصائص.
عيّنات تعليمات برمجية
يتضمّن الدليل التوجيهي حول إضافة المضلّعات المضلّلة الخطوط المتعددة المناطق والمسارات كل رمز تطبيق Android بسيط.
بالإضافة إلى ذلك، يتضمّن مستودع ApiDemos في GitHub نماذج تعرض استخدام الأشكال وميزاتها:
- CircleDemoActivity (Java / Kotlin): دائرة
- PolygonDemoActivity (Java / Kotlin): المضلّع
- PolylineDemoActivity (Java / Kotlin): Polyline
خطوط متعددة
تحدّد فئة Polyline
مجموعة من شرائح الخطوط المتصلة على الخريطة. يتكون كائن Polyline
من مجموعة من المواقع الجغرافية
LatLng
، وينشئ سلسلة من الشرائح الخطية التي تربط هذه المواقع الجغرافية بتسلسل منظم.
يقدّم هذا الفيديو أفكارًا حول كيفية مساعدة المستخدمين في الوصول إلى وجهتهم، وذلك باستخدام الخطوط المتعددة لرسم مسار على الخريطة.
لإنشاء خط متعدد، عليك أولاً إنشاء كائن PolylineOptions
وإضافة نقاط إليه. تشير النقاط إلى نقطة على سطح الأرض،
ويتم التعبير عنها ككائن LatLng
. يتم رسم شرائح الأسطر
بين النقاط وفقًا لترتيب إضافتها إلى
العنصر PolylineOptions
.
لإضافة نقاط إلى عنصر PolylineOptions
، اطلب PolylineOptions.add()
.
يُرجى العِلم أنّ هذه الطريقة تأخذ عددًا متغيّرًا من المعلَمات حتى تتمكّن من إضافة نقاط متعددة في الوقت نفسه (يمكنك أيضًا طلب PolylineOptions.addAll(Iterable<LatLng>)
) إذا كانت النقاط مدرَجة في قائمة حاليًا.
يمكنك بعد ذلك إضافة خط متعدد إلى خريطة من خلال الاتصال
GoogleMap.addPolyline(PolylineOptions)
. وتعرِض الطريقة الكائن Polyline
الذي يمكنك من خلاله تغيير الخط المتعدد في وقت لاحق.
يوضح مقتطف الرمز التالي كيفية إضافة مستطيل إلى الخريطة:
لغة Java
// Instantiates a new Polyline object and adds points to define a rectangle PolylineOptions polylineOptions = new PolylineOptions() .add(new LatLng(37.35, -122.0)) .add(new LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(new LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(new LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(new LatLng(37.35, -122.0)); // Closes the polyline. // Get back the mutable Polyline Polyline polyline = map.addPolyline(polylineOptions);
Kotlin
// Instantiates a new Polyline object and adds points to define a rectangle val polylineOptions = PolylineOptions() .add(LatLng(37.35, -122.0)) .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(LatLng(37.35, -122.0)) // Closes the polyline. // Get back the mutable Polyline val polyline = map.addPolyline(polylineOptions)
يظهر المستطيل على الخريطة كما هو موضح أدناه:
لتغيير شكل الخط متعدد الخط بعد إضافته، يمكنك الاتصال بـ Polyline.setPoints()
وتقديم قائمة جديدة بالنقاط لهذا الخط.
يمكنك تخصيص شكل الخط المتعدد قبل إضافته إلى الخريطة وبعد إضافته إلى الخريطة. يمكنك الاطّلاع على القسم المتعلق بتخصيص المظاهر أدناه للحصول على مزيد من التفاصيل.
تخصيص الخط المتعدد
هناك عدة طرق لتخصيص مظهر الخطوط المتعددة:
- تضبط الخطوط المتعددة الألوان أقسامًا متعددة الخطوط على ألوان مختلفة.
- الخطوط المتعددة التدريجية تدرج لونًا من الخطوط المتعددة باستخدام تدرج لونين.
- يحدّد الخطوط المتعددة المختومة نمطًا متعددًا باستخدام الصور المتحركة المتكررة.
لاستخدام عمليات تخصيص Polyline، يجب استخدام الإصدار 18.1.0 أو إصدار أحدث من حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع Android، واستخدام أحدث إصدار من حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لأجهزة Android.
إنشاء خط متعدد الألوان
يمكنك استخدام النطاقات لتلوين شرائح فردية من الخطوط المتعددة من خلال
إنشاء كائنات StyleSpan
وإضافتها إلى PolylineOptions
باستخدام طرق addSpan()
أو addSpans()
. وحسب الإعدادات التلقائية، سيضبط كل عنصر في المصفوفة لون
شريحة السطر المقابلة. يوضّح المثال التالي ضبط ألوان الشريحة لإنشاء خط متعدد مع تقسيمه إلى الأحمر والأخضر:
لغة Java
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(new StyleSpan(Color.RED)) .addSpan(new StyleSpan(Color.GREEN)));
Kotlin
val line = map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan(StyleSpan(Color.RED)) .addSpan(StyleSpan(Color.GREEN)) )
إنشاء خط متعدد الانحدار
يمكنك تحديد تدرج عن طريق تحديد عددين صحيحين 32 بت باللون الأحمر والأخضر والأزرق (ARGB) لتحديد لوني البداية والنهاية للضربة. اضبط هذه السمة على كائن خيارات الشكل عن طريق استدعاء PolylineOptions.addSpan()
.
يوضّح المثال التالي إنشاء خط متعدد متدرّج باللون الأحمر إلى الأصفر من حديقة حيوانات "وودلاند بارك" إلى "كيركلاند" بولاية واشنطن.
لغة Java
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));
Kotlin
val line = map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan( StyleSpan( StrokeStyle.gradientBuilder( Color.RED, Color.YELLOW ).build() ) ) )
إنشاء خط متعدد مختوم
يمكنك ضبط مظهر الخط المضلّع على زخرفة متكررة لصورة نقطية. لإجراء ذلك، أنشِئ StampStyle
من TextureStyle
، ثم اضبط هذه السمة على
كائن الخيارات في شكل "عن طريق استدعاء PolylineOptions.addSpan()
" كما هو موضّح هنا:
لغة Java
StampStyle stampStyle = TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build(); StyleSpan span = new StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build()); map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(span));
Kotlin
val stampStyle = TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build() val span = StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build()) map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan(span) )
أحداث الخطوط المتعددة
وحسب الإعدادات التلقائية، لا يمكن النقر على الخطوط المتعددة. ويمكنك تفعيل إمكانية النقر وإيقافها من خلال الاتصال بالرقم Polyline.setClickable(boolean)
.
يمكنك استخدام OnPolylineClickListener
للاستماع إلى أحداث النقر على خط متعدد قابل للنقر. لضبط هذا المستمع على الخريطة،
اتصل برقم GoogleMap.setOnPolylineClickListener(OnPolylineClickListener)
.
عندما ينقر المستخدم على خط متعدد، ستتلقّى معاودة اتصال
onPolylineClick(Polyline)
.
مُضلع
تشبه كائنات Polygon
الكائنات Polyline
التي تتألف من سلسلة من التسلسلات بتسلسل
تسلسلي. ومع ذلك، بدلاً من أن تكون المضلّعات مفتوحة، يتم تصميم
المناطق المضلّعة لتحديد مناطق داخل حلقة مغلقة من الداخل.
يمكنك إضافة Polygon
إلى الخريطة بالطريقة نفسها التي تضيف بها
Polyline
. عليك أولاً إنشاء كائن PolygonOptions
وإضافة بعض النقاط إليه. ستشكل هذه النقاط مخطط المضلّع.
بعد ذلك، عليك إضافة المضلّع إلى الخريطة من خلال استدعاء
GoogleMap.addPolygon(PolygonOptions)
، ما سيؤدي إلى
عرض عنصر Polygon
.
يضيف مقتطف الرمز التالي مستطيلاً إلى الخريطة.
لغة Java
// Instantiates a new Polygon object and adds points to define a rectangle PolygonOptions polygonOptions = new PolygonOptions() .add(new LatLng(37.35, -122.0), new LatLng(37.45, -122.0), new LatLng(37.45, -122.2), new LatLng(37.35, -122.2), new LatLng(37.35, -122.0)); // Get back the mutable Polygon Polygon polygon = map.addPolygon(polygonOptions);
Kotlin
// Instantiates a new Polygon object and adds points to define a rectangle val rectOptions = PolygonOptions() .add( LatLng(37.35, -122.0), LatLng(37.45, -122.0), LatLng(37.45, -122.2), LatLng(37.35, -122.2), LatLng(37.35, -122.0) ) // Get back the mutable Polygon val polygon = map.addPolygon(rectOptions)
لتغيير شكل المضلّع بعد إضافته، يمكنك استدعاء
Polygon.setPoints()
وتقديم قائمة جديدة بالنقاط لمخطّط المضلّع.
يمكنك تخصيص مظهر المضلّع قبل إضافته إلى الخريطة وبعد إضافتها إلى الخريطة. يمكنك الاطّلاع على القسم المتعلق بتخصيص المظاهر أدناه للحصول على مزيد من التفاصيل.
الإكمال التلقائي المضلّعي
يتكون المضلّع في المثال أعلاه من خمسة إحداثيات، ولكن يُرجى ملاحظة أن الإحداثيات الأولى والأخيرة هي الموقع نفسه، والذي يحدد الحلقة. من الناحية العملية، بما أنّ المضلّعات تحدّد المناطق المغلقة، لا تحتاج إلى تحديد هذا التنسيق الأخير. وإذا اختلف التنسيق الأخير عن الأول، ستعمل "واجهة برمجة التطبيقات" على "إغلاق" المضلّع تلقائيًا من خلال إلحاق التنسيق الأول في نهاية تسلسل الإحداثيات.
إنّ المضلّعيَين الواردَين أدناه مكافئان، وسيؤدي عرض
polygon.getPoints()
لكلّ منهما إلى عرض النقاط الأربعة كلها.
لغة Java
Polygon polygon1 = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0)) .strokeColor(Color.RED) .fillColor(Color.BLUE)); Polygon polygon2 = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5)) .strokeColor(Color.RED) .fillColor(Color.BLUE));
Kotlin
val polygon1 = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0), LatLng(0.0, 0.0) ) .strokeColor(Color.RED) .fillColor(Color.BLUE) ) val polygon2 = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0) ) .strokeColor(Color.RED) .fillColor(Color.BLUE) )
إنشاء مضلع مجوف
يمكن دمج مسارات متعددة في كائن Polygon
واحد لإنشاء أشكال معقدة، مثل الحلقات المحشوة أو "الكعك المُحلّى" (حيث تظهر المناطق المضلّعة داخل المضلع على شكل "جزر"). الأشكال المعقدة هي دائمًا تركيبات متعددة وبسيطة وأكثر من غيرها.
يجب تحديد مسارين في المنطقة نفسها. يحدد الجزء الأكبر من المنطقتين
منطقة التعبئة، وهو شكل مضلع بسيط بدون خيارات إضافية.
ثم أدخِل مسارًا ثانيًا إلى طريقة addHole()
. وعندما يكون المسار الثاني الأصغر حجمًا محاطًا بمسار أكبر، سيبدو كما لو كان قد تمت إزالة جزء من المضلّع. إذا تقاطعت الفتحة مع مخطط المضلّع،
سيتم عرض المضلع بدون أي تعبئة.
سينشئ المقتطف أدناه مستطيلاً واحدًا مع فتحة مستطيلة أصغر حجمًا.
لغة Java
List<LatLng> hole = Arrays.asList(new LatLng(1, 1), new LatLng(1, 2), new LatLng(2, 2), new LatLng(2, 1), new LatLng(1, 1)); Polygon hollowPolygon = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(3, 0), new LatLng(0, 0)) .addHole(hole) .fillColor(Color.BLUE));
Kotlin
val hole = listOf( LatLng(1.0, 1.0), LatLng(1.0, 2.0), LatLng(2.0, 2.0), LatLng(2.0, 1.0), LatLng(1.0, 1.0) ) val hollowPolygon = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0), LatLng(3.0, 0.0), LatLng(0.0, 0.0) ) .addHole(hole) .fillColor(Color.BLUE) )
يظهر المضلع المجوف على الخريطة كما هو موضح أدناه:
أحداث المضلّع
لا يمكن النقر على المضلّعات تلقائيًا. ويمكنك تفعيل إمكانية النقر وإيقافها من خلال الاتصال بالرقم Polygon.setClickable(boolean)
.
استخدِم OnPolygonClickListener
للاستماع إلى النقر على الأحداث في شكل مضلع قابل للنقر. لضبط هذا المستمع على الخريطة،
اتصل برقم GoogleMap.setOnPolygonClickListener(OnPolygonClickListener)
.
عندما ينقر المستخدم على المضلّع، ستتلقّى رد اتصال
onPolygonClick(Polygon)
.
دوائر
بالإضافة إلى فئة Polygon
عامة، تتضمّن Maps API أيضًا فئات محدّدة لعناصر Circle
لتبسيط عملية إنشائها.
لإنشاء دائرة، يجب تحديد السمتَين التاليتَين:
center
كـLatLng
.radius
متر
بعد ذلك، يتم تعريف الدائرة على أنها مجموعة كل النقاط على سطح الأرض والتي تبعد مسافة radius
متر عن موقع center
المحدّد. بسبب كيفية عرض إسقاط Mercator الذي تستخدمه واجهة API API للخرائط على سطح مستوٍ،
سيظهر هذا كدائرة مثالية تقريبًا على الخريطة عند وجودها بالقرب من
خط الاستواء، وستظهر هذه الجولة بشكل غير دائري (على الشاشة) مع ابتعاد الدائرة عن خط الاستواء.
لتغيير شكل الدائرة بعد إضافتها، يمكنك الاتصال
بالرقم Circle.setRadius()
أو Circle.setCenter()
وتقديم قيم جديدة.
يمكنك تخصيص مظهر الدائرة قبل إضافتها إلى الخريطة وبعد إضافتها إلى الخريطة. يمكنك الاطّلاع على القسم المتعلق بتخصيص المظاهر أدناه للحصول على مزيد من التفاصيل.
يضيف مقتطف الرمز التالي دائرة إلى الخريطة من خلال إنشاء عنصر CircleOptions
والاتصال
GoogleMap.addCircle(CircleOptions)
:
لغة Java
// Instantiates a new CircleOptions object and defines the center and radius CircleOptions circleOptions = new CircleOptions() .center(new LatLng(37.4, -122.1)) .radius(1000); // In meters // Get back the mutable Circle Circle circle = map.addCircle(circleOptions);
Kotlin
// Instantiates a new CircleOptions object and defines the center and radius val circleOptions = CircleOptions() .center(LatLng(37.4, -122.1)) .radius(1000.0) // In meters // Get back the mutable Circle val circle = map.addCircle(circleOptions)
أحداث دائرية
حسب الإعداد التلقائي، لا يمكن النقر على الدوائر. يمكنك تفعيل إمكانية النقر وإيقافها من خلال الاتصال بالرقم GoogleMap.addCircle()
باستخدام الرقم CircleOptions.clickable(boolean)
أو الاتصال بالرقم Circle.setClickable(boolean)
.
يمكنك استخدام أداة OnCircleClickListener
للاستماع إلى الأحداث والنقر عليها في دائرة قابلة للنقر. لضبط هذا المستمع على الخريطة،
اتصل برقم GoogleMap.setOnCircleClickListener(OnCircleClickListener)
.
عندما ينقر مستخدم على دائرة، ستتلقّى
ردًا من onCircleClick(Circle)
على النحو الموضّح في نموذج الرمز التالي:
لغة Java
Circle circle = map.addCircle(new CircleOptions() .center(new LatLng(37.4, -122.1)) .radius(1000) .strokeWidth(10) .strokeColor(Color.GREEN) .fillColor(Color.argb(128, 255, 0, 0)) .clickable(true)); map.setOnCircleClickListener(new GoogleMap.OnCircleClickListener() { @Override public void onCircleClick(Circle circle) { // Flip the r, g and b components of the circle's stroke color. int strokeColor = circle.getStrokeColor() ^ 0x00ffffff; circle.setStrokeColor(strokeColor); } });
Kotlin
val circle = map.addCircle( CircleOptions() .center(LatLng(37.4, -122.1)) .radius(1000.0) .strokeWidth(10f) .strokeColor(Color.GREEN) .fillColor(Color.argb(128, 255, 0, 0)) .clickable(true) ) map.setOnCircleClickListener { // Flip the r, g and b components of the circle's stroke color. val strokeColor = it.strokeColor xor 0x00ffffff it.strokeColor = strokeColor }
تخصيص المظاهر
يمكنك تغيير مظهر الشكل قبل أن تتم إضافته إلى الخريطة (من خلال تحديد الخاصية المطلوبة على عنصر الخيارات) أو بعد إضافته إلى الخريطة. ويتم أيضًا عرض الخوارزميَّة لجميع المواقع الإلكترونية بحيث يمكنك الوصول بسهولة إلى الحالة الحالية للشكل.
يضيف المقتطف التالي خطًا أزرق سميكًا بشرائح جيوديسية من ملبورن إلى بيرث. تشرح الأقسام أدناه هذه السمات بمزيد من التفاصيل.
لغة Java
Polyline polyline = map.addPolyline(new PolylineOptions() .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734)) .width(25) .color(Color.BLUE) .geodesic(true));
Kotlin
val polyline = map.addPolyline( PolylineOptions() .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734)) .width(25f) .color(Color.BLUE) .geodesic(true) )
تظهر الخريطة كما هو موضح أدناه:
ملاحظة: على الرغم من أنّ معظم هذه الطرق يمكن تطبيقها على أيّ من الأشكال الموضّحة، فإنّ بعض الخصائص قد لا تكون مفيدة لأشكال معيّنة (على سبيل المثال، لا يمكن أن يحتوي خط Polyline على لون ملء لأنّه لا يحتوي على تصميم داخلي).
لون الشطب
لون ضربة الهواء هو عدد صحيح 32 بت باللون الأحمر والأخضر والأزرق (ARGB) لتحديد تعتيم ولون رسم الشكل. اضبُط هذه السمة على عنصر خيارات
الشكل من خلال طلب *Options.strokeColor()
(أو
PolylineOptions.color()
في حال استخدام خط متعدد). إذا لم يتم تحديد هذا اللون،
سيكون لون السكتة التلقائية باللون الأسود (Color.BLACK
).
بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى لون الخط من خلال الاتصال بـ getStrokeColor()
(أو getColor()
للخط العريض) وقد يتم تغييره عن طريق الاتصال بـ setStrokeColor()
(setColor() for a polyline
).
لون التعبئة
لا ينطبق لون التعبئة إلا على المضلعات و الدوائر. ولا ينطبق على الخطوط المتعددة لأنها لم تحدّد مساحات داخلية. بالنسبة إلى المضلّع، لا تكون المناطق داخل ثقوبه جزءًا من التصميم الداخلي للمضلع، ولن يتم تلوينها في حال ضبط لون التعبئة.
لون التعبئة هو عدد صحيح 32 بت باللون الأحمر والأخضر والأزرق (ARGB) لتحديد تعتيم اللون ولونه من الداخل. ضَع هذه السمة على كائن الخيارات في
الشكل من خلال طلب *Options.fillColor()
. إذا لم يتم تحديد اللون،
يكون لون الرسم التلقائي شفافًا (Color.TRANSPARENT
).
بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى لون التعبئة من خلال الاتصال بـ getFillColor()
ويمكن تغييره عن طريق الاتصال بـ setFillColor()
.
عرض الكتابة
عرض ضغطة السطر، على شكل عائم بوحدات بكسل
(بكسل). لا يتم تغيير عرض النطاق عند تكبيره على الخريطة (أي أن الشكل سيحظى بعرض العرض نفسه على جميع مستويات التكبير أو التصغير). اضبُط هذه السمة على عنصر خيار
الشكل من خلال استدعاء *Options.strokeWidth()
(أو PolylineOptions.width()
لسطر متعدد الأبعاد). إذا لم يتم تحديد القيمة، سيكون الحد التلقائي للرسم البياني 10 بكسل.
بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى عرض الضربة من خلال الاتصال بـ getStrokeWidth()
(أو getWidth()
للخط الخطي) ويمكن تغييره عن طريق طلب setStrokeWidth()
(setWidth() for a polyline
).
نمط رسم المفاتيح
نمط الخط التلقائي هو خط متصل للخطوط المتعددة ومخططات
المضلعات والدوائر. يمكنك تحديد نمط سباحة مخصّص
لكائنات PatternItem
، حيث يكون لكل عنصر شرطة أو نقطة أو فجوة.
يضبط النموذج التالي نمطًا لتسلسل متعدد الأضلاع على التسلسل المتكرر للنقطة، يليه فجوة طولها 20 بكسل وشرطة طول 30 بكسل وفجوة أخرى تبلغ 20 بكسل.
لغة Java
List<PatternItem> pattern = Arrays.asList( new Dot(), new Gap(20), new Dash(30), new Gap(20)); polyline.setPattern(pattern);
Kotlin
val pattern = listOf( Dot(), Gap(20F), Dash(30F), Gap(20F) ) polyline.pattern = pattern
كرر النمط على طول الخط، بدءًا من العنصر الأول في النمط في أول انعكاس محدد للشكل.
أنواع المفاصل
بالنسبة إلى الخطوط المضلِّعة ومخططات المضلّعات، يمكنك تحديد مجسم دائري أو دائري
JointType
لاستبدال نوع المفصل التلقائي الثابت.
يُطبّق النموذج التالي نوع الفاصل الدائري على الخط المضلع:
لغة Java
polyline.setJointType(JointType.ROUND);
Kotlin
polyline.jointType = JointType.ROUND
يؤثر نوع المفصل في المنحنيات الداخلية في السطر. إذا كان الخط يحتوي على نمط ضربة يتضمن شَرطة، يتم تطبيق نوع المفصل أيضًا عند تخطّي الشرطة. لا تؤثر أنواع المفاصل على النقاط، لأنها دائمًا دائرية.
الأحرف الكبيرة
يمكنك تحديد نمط Cap
لكل طرف من الخطوط المتعددة. تكون الخيارات
مؤقتة (تلقائية) أو مربّعة أو دائرية أو صورة نقطية مخصّصة.
اضبط النمط في PolylineOptions.startCap
و
PolylineOptions.endCap
أو استخدِم
الطُرق المناسبة لتحديد الغيار مرة أخرى.
يحدد المقتطف التالي حدًا دائريًا في بداية الخط المضلّع.
لغة Java
polyline.setStartCap(new RoundCap());
Kotlin
polyline.startCap = RoundCap()
يحدِّد المقتطف التالي صورة نقطية مخصّصة لنهاية النهاية:
لغة Java
polyline.setEndCap( new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));
Kotlin
polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)
عند استخدام صورة نقطية مخصّصة، يجب تحديد عرض ضربة مرجعية بالبكسل. وتوسِّع واجهة برمجة التطبيقات الصورة المصغّرة وفقًا لذلك. عرض ضربة المرجع هو عرض الضربة الذي استخدمته عند تصميم صورة نقطية لحد الرسم، على البُعد الأصلي للصورة. يبلغ عرض الخط التلقائي للرسم البياني 10 بكسل. تلميح: لتحديد عرض ضغطة المرجع، افتح صورة الصورة المصغّرة عند التكبير 100% في محرِّر الصور، ثم ارسم العرض المطلوب لضربات الخط ذات الصلة بالصورة.
في حال استخدام
BitmapDescriptorFactory.fromResource()
لإنشاء صورة نقطية، تأكَّد من استخدام مورد مستقل لا يتضمن الكثافة
(nodpi).
شرائح جيوديسية
لا ينطبق الإعداد الجيوسيائي إلا على الخطوط المتعددة والمضلعات. ولا ينطبق على الدوائر لأنه لم يتم تحديدها كمجموعة من الشرائح.
يحدد الإعداد الجيوسيدي كيفية رسم شرائح الخط بين الرؤوس المتتالية في المضلع/المضلّع. الشرائح الجيوديسية هي تلك التي تتبع أقصر مسار على سطح الأرض (كوكة) وغالبًا ما تظهر كخطوط منحنية على خريطة مع إسقاط ماركاتور. يتم رسم الشرائح غير الجيوديسية على شكل خطوط مستقيمة على الخريطة.
اضبط هذه السمة على كائن خيار الشكل عن طريق طلب
*Options.geodesic()
حيث يشير true
إلى أنّه يجب رسم الشرائح
كهندسة جيوديسية ويشير false
إلى أنّه يجب رسم الأجزاء في شكل خطوط مستقيمة.
إذا لم يتم تحديد هذه القيمة، ستكون القيمة التلقائية هي الشرائح غير الجيوديسية (false
).
بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى الإعداد الجيوديسي من خلال الاتصال بـ isGeodesic()
وقد يتم تغييره عن طريق الاتصال بـ setGeodesic()
.
فهرس Z
يحدد فهرس z ترتيب تسلسل استدعاء الدوال البرمجية لهذا الشكل، بالنسبة إلى التراكبات الأخرى (الأشكال الأخرى والتراكبات الأرضية وتراكبات الصور) على الخريطة. يتم رسم تراكب مركّب ذي z مرتفع فوق التراكبات التي تحتوي على فهارس z منخفضة. يتم رسم تراكبَين بمؤشر z نفسه بترتيب عشوائي.
يُرجى العِلم أنّ العلامات دائمًا مرسومة فوق تراكبات أخرى، بغض النظر عن فهرس z للتراكبات الأخرى.
يمكنك ضبط هذه السمة في عنصر خيارات الشكل عن طريق طلب *Options.zIndex()
.
وفي حال عدم تحديد هذا الحقل، سيكون فهرس z التلقائي هو 0
. بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى فهرس z من خلال استدعاء getZIndex()
وقد يتم تغييره عن طريق الاتصال بـ setZIndex()
.
مستوى العرض
يحدِّد مستوى الرؤية ما إذا كان يجب رسم الشكل على الخريطة، حيث يشير
true
إلى أنه يجب رسمه ويشير false
إلى عدم رسمه. يسمح لك ذلك بعدم عرض شكل إعلان على الخريطة مؤقتًا. لإزالة شكل
من الخريطة نهائيًا، عليك الاتصال بـ remove()
على هذا الشكل.
اضبط هذه السمة على عنصر خيارات الشكل عن طريق طلب
*Options.visible()
. وإذا لم يتم تحديد هذه القيمة، مستوى الرؤية التلقائي هو true
.
بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى الرؤية عن طريق الاتصال بـ isVisible()
ويمكن تغييرها عن طريق الاتصال بـ setVisible()
.
ربط البيانات بشكل
يمكنك تخزين عنصر بيانات عشوائي باستخدام شكل متعدد الأضلاع أو مضلع أو دائرة
باستخدام طريقة setTag()
للشكل واسترداد العنصر باستخدام getTag()
.
على سبيل المثال، يمكنك طلب Polyline.setTag()
لتخزين كائن بيانات باستخدام خط متعدد، واستدعاء Polyline.getTag()
لاسترداد عنصر البيانات.
يحدِّد الرمز أدناه علامة عشوائية (A
) لخط الخطوط المحدَّد:
لغة Java
Polyline polyline = map.addPolyline((new PolylineOptions()) .clickable(true) .add(new LatLng(-35.016, 143.321), new LatLng(-34.747, 145.592), new LatLng(-34.364, 147.891), new LatLng(-33.501, 150.217), new LatLng(-32.306, 149.248), new LatLng(-32.491, 147.309))); polyline.setTag("A");
Kotlin
val polyline = map.addPolyline( PolylineOptions() .clickable(true) .add( LatLng(-35.016, 143.321), LatLng(-34.747, 145.592), LatLng(-34.364, 147.891), LatLng(-33.501, 150.217), LatLng(-32.306, 149.248), LatLng(-32.491, 147.309) ) ) polyline.tag = "A"
في ما يلي بعض الأمثلة على السيناريوهات التي يكون فيها تخزين البيانات واستردادها بأشكال مناسبة:
- قد يلبي تطبيقك أنواعًا مختلفة من الأشكال، وتريد التعامل معه بشكل مختلف عندما ينقر المستخدم عليه.
- يُحتمل أنّك تواجه نظامًا له معرّفات سجلّات فريدة، حيث تمثّل الأشكال سجلّات محدّدة في هذا النظام.
- قد تشير بيانات الشكل إلى أولوية لتحديد فهرس z للشكل.