توفّر Google Maps API لنظام التشغيل Android بعض الطرق البسيطة لإضافة أشكال إلى خرائطك من أجل تخصيصها لتطبيقك.
Polyline
هو سلسلة من أجزاء الخطوط المتصلة التي يمكن أن تشكل أي شكل تريده ويمكن استخدامها لوضع علامات على المسارات والطرق على الخريطة.Polygon
هو شكل مغلق يمكن استخدامه لوضع علامة على المناطق على الخريطة.Circle
هو إسقاط جغرافي دقيق لدائرة على سطح الأرض مرسومة على الخريطة.
بالنسبة إلى كل هذه الأشكال، يمكنك تخصيص مظهرها من خلال تغيير عدد من السمات.
عيّنات تعليمات برمجية
يتضمّن الدليل التعليمي حول إضافة الأشكال المتعددة الأضلاع والخطوط المتعددة لتمثيل المناطق والطرق جميع الرموز البرمجية لتطبيق Android بسيط.
بالإضافة إلى ذلك، يتضمّن مستودع ApiDemos على GitHub عيّنات توضّح استخدام الأشكال وميزاتها:
- CircleDemoActivity (Java / Kotlin): دائرة
- PolygonDemoActivity (Java / Kotlin): مضلّع
- PolylineDemoActivity (Java / Kotlin): خطوط متعدّدة
الخطوط المتعددة
تحدّد فئة Polyline
مجموعة من أقسام الخطوط المتصلّة
على الخريطة. يتألّف عنصر Polyline
من مجموعة من المواقع الجغرافية
LatLng
، وينشئ سلسلة من أقسام الخطوط التي
تربط هذه المواقع الجغرافية في تسلسل مرتّب.
يقدّم هذا الفيديو أفكارًا حول كيفية مساعدة المستخدمين في الوصول إلى وجهتهم، باستخدام الخطوط المتعددة لرسم مسار على الخريطة.
لإنشاء خط متعدد الأضلاع، أنشئ أولاً كائن PolylineOptions
وأضِف نقاطًا إليه. تمثّل النقاط نقطة على سطح الأرض،
ويتم التعبير عنها كعنصر LatLng
. يتم رسم الأجزاء المستقيمة
بين النقاط وفقًا للترتيب الذي تضيفها به إلى جسم
PolylineOptions
.
لإضافة نقاط إلى عنصر PolylineOptions
، اتصل بالرقم PolylineOptions.add()
.
تجدر الإشارة إلى أنّ هذه الطريقة تستخدِم عددًا متغيّرًا من المَعلمات حتى تتمكّن من
إضافة نقاط متعدّدة في المرّة الواحدة (يمكنك أيضًا استدعاء PolylineOptions.addAll(Iterable<LatLng>)
إذا كانت النقاط مضمّنة في قائمة).
يمكنك بعد ذلك إضافة الخطوط المتعددة إلى خريطة من خلال استدعاء
GoogleMap.addPolyline(PolylineOptions)
. تعرض المحاولة
عنصرًا من النوع Polyline
يمكنك من خلاله تغيير الخط المتعدّد في وقتٍ
لاحق.
يوضِّح مقتطف الرمز التالي كيفية إضافة مستطيل إلى خريطة:
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)
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);
يظهر المستطيل على الخريطة كما هو موضّح أدناه:
لتغيير شكل الخط المتعدّد بعد إضافته، يمكنك استدعاء
Polyline.setPoints()
وتقديم قائمة جديدة بالنقاط للخط المتعدّد.
يمكنك تخصيص مظهر الخط المتعدّد قبل إضافته إلى الخريطة وبعد إضافته إليها. اطّلِع على القسم المخصّص لموضوع تخصيص المظاهر أدناه للحصول على مزيد من التفاصيل.
تخصيص الخطوط المتعددة
هناك عدة طرق لتخصيص مظهر الخطوط المتعددة:
- الخطوط المتعددة الملوّنة: تضبط أجزاء الخطوط المتعددة ألوانًا مختلفة.
- الخطوط المتعددة المتدرجة: تُلوّن خطًا متعددًا باستخدام تدرج لوني من لونَين.
- الخطوط المتعددة المُختمة: تنشئ نمطًا لخط متعدد باستخدام ملفات رسومات نقطية متكررة.
لاستخدام ميزة "تخصيصات الخطوط المتعددة"، يجب استخدام الإصدار 18.1.0 أو إصدار أحدث من حزمة "تطوير البرامج بالاستناد إلى بيانات خرائط Google" لنظام التشغيل Android واستخدام أحدث أداة معالجة لـ "تطوير البرامج بالاستناد إلى بيانات خرائط Google" لنظام التشغيل Android.
إنشاء خط متعدد الخطوط متعدد الألوان
يمكنك استخدام الفواصل لتلوين أجزاء من الخط المتعدّد بشكلٍ فردي، وذلك عن طريق إنشاء عناصر
StyleSpan
وإضافتها إلى PolylineOptions
باستخدام الطريقتَين addSpan()
أو addSpans()
. سيحدّد كل عنصر في الصفيف تلقائيًا لون
القطعة المستقيمة المقابلة. يوضّح المثال التالي كيفية ضبط ألوان
المقاطع لإنشاء خط متعدد الأضلاع يتضمّن مقاطع حمراء وخضراء:
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)) )
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)));
إنشاء خط متعدد الأضلاع متدرّج
يمكنك تحديد مخطط متدرّج من خلال تحديد عددَين صحيحَين من النوع ARGB (أحمر وأخضر وأزرق وشفافية)
بسعة 32 بت لتحديد ألوان بداية العنصر ونهايته. اضبط هذه
السمة على عنصر خيارات الشكل من خلال استدعاء PolylineOptions.addSpan()
.
يعرض المثال التالي إنشاء خط متعدد الأضلاع متدرّج من الأحمر إلى الأصفر من
حديقة حيوانات وودلاند إلى كيركبن، واشنطن.
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() ) ) )
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())));
إنشاء خط متعدد مُختم
يمكنك ضبط مظهر الخط المتعدّد على نسيج ملفّ رسومات نقطية متكرّر. لتنفيذ
هذا، أنشئ StampStyle
من TextureStyle
، ثم اضبط هذه السمة على
عنصر خيارات الشكل من خلال استدعاء PolylineOptions.addSpan()
كما هو موضّح هنا:
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) )
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));
أحداث الخطوط المتعددة
لا يمكن النقر على الخطوط المتعددة بشكل تلقائي. يمكنك تفعيل ميزة
إمكانية النقر وإيقافها من خلال الاتصال بالرقم Polyline.setClickable(boolean)
.
استخدِم OnPolylineClickListener
لتلقّي إشعارات بأحداث النقر على خطّ متعدّد الأضلاع قابل للنقر. لضبط هذا المستمع على الخريطة،
اتصل على GoogleMap.setOnPolylineClickListener(OnPolylineClickListener)
.
عندما ينقر مستخدم على خط متعدد الأضلاع، ستتلقّى مكالمة onPolylineClick(Polyline)
.
المضلّعات
تتشابه عناصر Polygon
مع عناصر Polyline
من حيث أنّها تتكوّن من سلسلة من الإحداثيات في تسلسل
مرتّب. ومع ذلك، بدلاً من أن تكون مفتوحة، تم تصميم المضلّعات لتحديد مناطق ضمن حلقة مغلقة مع ملء الجزء الداخلي.
يمكنك إضافة Polygon
إلى الخريطة بالطريقة نفسها التي تضيف بها
Polyline
. أولاً، أنشئ عنصر PolygonOptions
وأضِف بعض النقاط إليه. ستشكل هذه النقاط المخطط الخارجي للمضلّع.
يمكنك بعد ذلك إضافة المضلّع إلى الخريطة من خلال استدعاء
GoogleMap.addPolygon(PolygonOptions)
الذي سيؤدي إلى
عرض عنصر Polygon
.
يضيف مقتطف الرمز البرمجي التالي مستطيلاً إلى خريطة.
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)
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);
لتغيير شكل المضلع بعد إضافته، يمكنك استدعاء
Polygon.setPoints()
وتقديم قائمة جديدة بالنقاط لتحديد حدود
المضلع.
يمكنك تخصيص مظهر المضلع قبل إضافته إلى الخريطة وبعد إضافته إليها. اطّلِع على القسم المخصّص لموضوع تخصيص المظاهر أدناه للحصول على مزيد من التفاصيل.
الإكمال التلقائي للمضلّعات
يتألّف المضلّع في المثال أعلاه من خمسة إحداثيات، ولكن يُرجى ملاحظة أنّه الإحداثيَين الأول والأخير هما الموقع الجغرافي نفسه، ما يحدّد حلقة الالتفاف. في الواقع، بما أنّ المضلّعات تحدّد مناطق مغلقة، ليس عليك تحديد هذه الإحداثية الأخيرة. إذا كان الإحداثي الأخير يختلف عن الإحداثي الأول، ستعمل واجهة برمجة التطبيقات على "إغلاق" المضلع تلقائيًا من خلال إلحاق الإحداثي الأول في نهاية تسلسل الإحداثيات.
المضلّعان أدناه متكافئان، وسيؤدي استدعاء
polygon.getPoints()
لكل منهما إلى عرض جميع النقاط الأربع.
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) )
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));
إنشاء مضلّع مجوف
يمكن دمج مسارات متعددة في عنصر Polygon
واحد لإنشاء أشكال معقّدة، مثل الحلقات المملوءة أو "حلويات الدونات" (حيث تظهر مناطق مضلّعة داخل المضلّع على شكل "جزر"). إنّ الأشكال المعقدة هي دائمًا
مكوّنة من مسارات متعددة أبسط.
يجب تحديد مسارَين في المنطقة نفسها. تحدِّد المنطقة الأكبر من المنطقتَين
منطقة الملء، وهي مضلّع بسيط بدون خيارات إضافية.
بعد ذلك، نقْل مسارًا ثانيًا إلى طريقة addHole()
. عندما يكون المسار الثاني الأصغر حجمًا مغلقًا بالكامل بالمسار الأكبر، سيبدو الأمر وكأنّه تمّت إزالة جزء من المضلع. إذا تقاطعت الفتحة مع مخطّط المضلع،
سيتم عرض المضلع بدون أي تعبئة.
سيؤدي المقتطف أدناه إلى إنشاء مستطيل واحد، مع فتحة مستطيلة أصغر.
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) )
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));
يظهر المضلع المجوف على الخريطة كما هو موضّح أدناه:
أحداث المضلّعات
لا يمكن النقر على المضلّعات تلقائيًا. يمكنك تفعيل ميزة
إمكانية النقر وإيقافها من خلال الاتصال بالرقم Polygon.setClickable(boolean)
.
استخدِم OnPolygonClickListener
لتلقّي إشعارات أحداث النقر على مضلّع قابل للنقر. لضبط هذا المستمع على الخريطة،
اتصل على GoogleMap.setOnPolygonClickListener(OnPolygonClickListener)
.
عندما ينقر مستخدم على مضلع، ستتلقّى مكالمة onPolygonClick(Polygon)
.
دوائر
بالإضافة إلى فئة Polygon
العامة، تتضمّن Maps API أيضًا
فئات محدّدة لعناصر Circle
لتبسيط إنشائها.
لإنشاء دائرة، يجب تحديد السمتَين التاليتَين:
center
بصفتهاLatLng
-
radius
متر
يتم بعد ذلك تعريف الدائرة على أنّها مجموعة جميع النقاط على سطح الأرض
التي تبعد radius
مترًا عن center
المحدّد. ونظرًا للطريقة التي يعرض بها إسقاط ماركتور الذي تستخدمه واجهة برمجة التطبيقات للخرائط الكرة على سطح مستوٍ، ستظهر هذه الكرة كدائرة شبه مثالية على الخريطة عند وضعها بالقرب من خط الاستواء، وستظهر بشكل متزايد غير دائري (على الشاشة) كلما ابتعدت الدائرة عن خط الاستواء.
لتغيير شكل الدائرة بعد إضافتها، يمكنك استدعاء
Circle.setRadius()
أو Circle.setCenter()
وتقديم قيم جديدة.
يمكنك تخصيص مظهر الدائرة قبل إضافتها إلى الخريطة وبعد إضافتها إليها. اطّلِع على القسم المخصّص لموضوع تخصيص المظاهر أدناه للحصول على مزيد من التفاصيل.
تضيف المقتطف التالي من التعليمات البرمجية دائرة إلى الخريطة من خلال إنشاء عنصر
CircleOptions
واستدعاء
GoogleMap.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)
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);
أحداث "دائرة Google"
لا يمكن النقر على الدوائر تلقائيًا. يمكنك تفعيل ميزة
النقر وإيقافها من خلال الاتصال بالرقم GoogleMap.addCircle()
باستخدام
CircleOptions.clickable(boolean)
، أو من خلال الاتصال بالرقم
Circle.setClickable(boolean)
.
استخدِم OnCircleClickListener
لتسجيل أحداث النقرات على دائرة قابلة للنقر. لضبط هذا المستمع على الخريطة،
اتصل على GoogleMap.setOnCircleClickListener(OnCircleClickListener)
.
عندما ينقر أحد المستخدِمين على دائرة، ستتلقّى مكالمة onCircleClick(Circle)
، كما هو موضّح في نموذج الرمز البرمجي التالي:
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
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 polyline = map.addPolyline( PolylineOptions() .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734)) .width(25f) .color(Color.BLUE) .geodesic(true) )
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));
تظهر الخريطة كما هو موضّح أدناه:
ملاحظة: على الرغم من أنّه يمكن تطبيق معظم هذه السمات على أيّ من الأشكال الموضّحة، قد لا يكون لبعض السمات معنى في أشكال معيّنة (على سبيل المثال، لا يمكن أن يتضمّن الخط المتعدّد خطوطًا ملونة لأنّه لا يحتوي على مساحة داخلية).
لون الشطب
لون الخطوط هو عدد صحيح من 32 بت يمثّل قنوات ألفا والأحمر والأخضر والأزرق (ARGB) ويحدّد
مستوى التعتيم ولون خطوط الشكل. اضبط هذه السمة على عنصر
options للشكل من خلال استدعاء *Options.strokeColor()
(أو
PolylineOptions.color()
في حال استخدام خط متعدّد). إذا لم يتم تحديد لون، يكون
اللون التلقائي للخط هو الأسود (Color.BLACK
).
بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى لون الخطوط الحدودية من خلال
استدعاء getStrokeColor()
(أو getColor()
لخط متعدد الأضلاع) ويمكن تغييره
من خلال استدعاء setStrokeColor()
(setColor() for a polyline
).
لون التعبئة
لا ينطبق لون التعبئة إلا على المضلّعات والدوائر. ولا ينطبق على الخطوط المتعددة لأنّها لا تحتوي على مساحات داخلية محدّدة. بالنسبة إلى المضلّع، فإنّ المناطق داخل الفتحات ليست جزءًا من الجزء الداخلي للمضلّع ولن يتم تلوينها في حال ضبط لون تعبئة.
لون التعبئة هو عدد صحيح 32 بت من النوع ألفا-أحمر-أخضر-أزرق (ARGB) يحدِّد
مستوى التعتيم ولون الجزء الداخلي من الشكل. اضبط هذه السمة على ملف خيارات
shape من خلال استدعاء *Options.fillColor()
. إذا لم يتم تحديده، يكون
لون السكتة التلقائية شفافًا (Color.TRANSPARENT
).
بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى لون التعبئة من خلال
طلب getFillColor()
ويمكن تغييره من خلال طلب setFillColor()
.
عرض الكتابة
عرض خط الرسم، كقيمة عائمة بوحدة البكسل
(px). لا يتم تغيير العرض عند تكبير الخريطة (أي أنّ الشكل سيحتوي على
عرض خطوطه نفسه في جميع مستويات التكبير). اضبط هذه السمة على عنصر
خيار الشكل من خلال استدعاء *Options.strokeWidth()
(أو PolylineOptions.width()
لخط متعدّد الأضلاع). إذا لم يتم تحديد سمك، يكون سمك الخطوط التلقائي 10 بكسل.
بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى عرض الخطوط عن طريق
استدعاء getStrokeWidth()
(أو getWidth()
لخط متعدد الأجزاء) ويمكن تغييره
عن طريق استدعاء setStrokeWidth()
(setWidth() for a polyline
).
نمط الخطوط
نمط الحدّ التلقائي هو خطّ صلب للخطوط المتعددة وللخطوط الخارجية
للأشكال المتعددة الأضلاع والدائرات. يمكنك تحديد نمط مخصّص للخطوط لكائنات
PatternItem
، حيث يكون كل عنصر شرطة أو نقطة أو
فراغًا.
يضبط المثال التالي نمط الخطوط المتعددة على تسلسل متكرّر للنقطة، متبوعًا بفاصل بطول 20 بكسل، وشرطة بطول 30 بكسل، وفاصل آخر بطول 20 بكسل.
Kotlin
val pattern = listOf( Dot(), Gap(20F), Dash(30F), Gap(20F) ) polyline.pattern = pattern
Java
List<PatternItem> pattern = Arrays.asList( new Dot(), new Gap(20), new Dash(30), new Gap(20)); polyline.setPattern(pattern);
يتكرر النمط على طول الخط، بدءًا من عنصر النمط الأول في نقطة القمة الأولى المحدّدة للشكل.
أنواع المفاصل
بالنسبة إلى الخطوط المتعددة وخطوط حدود المضلّعات، يمكنك تحديد شكل مائل أو دائري
JointType
لاستبدال نوع الوصلات الثابتة التلقائية.
يطبّق المثال التالي نوع مفصل دائري على شكل خط متعدد الأضلاع:
Kotlin
polyline.jointType = JointType.ROUND
Java
polyline.setJointType(JointType.ROUND);
يؤثر نوع المفصل في الانحناءات الداخلية للخط. إذا كان الخط يحتوي على نمط للخطوط يتضمن شرطات، ينطبق نوع الوصل أيضًا عندما تمتد شرطة على جانبي الوصل. لا تؤثر أنواع الوصلات في النقاط، لأنّها تكون دائرية دائمًا.
أغطية الخطوط
يمكنك تحديد نمط Cap
لكل نهاية من خطوط البوليجون. الخيارات هي:
مُدمَج (تلقائي) أو مربّع أو دائري أو صورة نقطية مخصّصة.
اضبط النمط في PolylineOptions.startCap
و
PolylineOptions.endCap
، أو استخدِم
طُرق الحصول على القيم وضبطها المناسبة.
يحدِّد المقتطف التالي غطاءً دائريًا في بداية شكل خطوط متعددة.
Kotlin
polyline.startCap = RoundCap()
Java
polyline.setStartCap(new RoundCap());
يحدّد المقتطف التالي ملفًا مخصّصًا للصور النقطية للغطاء العلوي:
Kotlin
polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)
Java
polyline.setEndCap( new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));
عند استخدام صورة نقطية مخصّصة، يجب تحديد عرض إشارة الخطوط في البكسل. وتوسّع واجهة برمجة التطبيقات الصورة النقطية وفقًا لذلك. عرض الخطوط المرجعي هو عرض الخطوط الذي استخدمته عند تصميم صورة البكسل للقبعة، عند السمة الأصلية للصورة. يبلغ عرض الخطوط المرجعية التلقائية 10 بكسل. ملاحظة: لتحديد عرض الخطوط المرجعية، افتح صورة النقطة المرقّطة عند magnification 100% في محرِّر صور، وارسم العرض المطلوب للخط المرجعي بالنسبة إلى الصورة.
إذا كنت تستخدم
BitmapDescriptorFactory.fromResource()
لإنشاء الصورة النقطية، تأكَّد من استخدام مورد مستقل عن الكثافة
(nodpi).
الأجزاء الجيوديسية
لا ينطبق الإعداد الجيوديزى إلا على الخطوط المتعددة والأشكال المتعددة. ولا ينطبق على الدوائر لأنّها غير محدّدة كمجموعة من الشرائح.
يحدّد الإعداد الجيوديزى كيفية رسم أجزاء الخط بين القمم المتعاقبة للخط المتعدّد/الشكل المتعدّد الأضلاع. الأجزاء الجيوديسية هي الأجزاء التي يليه المسار الأقصر على سطح الأرض (الكرة الأرضية)، وغالبًا ما تظهر كخطوط منحنية على خريطة باستخدام إسقاط Mercator. يتم رسم الأجزاء غير الجيوديسية كخطوط مستقيمة على الخريطة.
اضبط هذه السمة على عنصر خيار الشكل من خلال استدعاء
*Options.geodesic()
حيث يشير true
إلى أنّه يجب رسم الأجزاء على شكل
خطوط هندسية وfalse
يشير إلى أنّه يجب رسم الأجزاء على شكل خطوط مستقيمة.
إذا لم يتم تحديده، يكون الإعداد التلقائي هو الأجزاء غير الجيوديسية (false
).
بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى الإعدادات الهندسية
من خلال استدعاء isGeodesic()
ويمكن تغييرها من خلال استدعاء setGeodesic()
.
فهرس Z
يحدِّد "فهرس z" ترتيب تجميع هذا الشكل، مقارنةً بالعناصر الأخرى التي يتمّ تطبيقها على الخريطة (الأشكال الأخرى والعناصر التي يتمّ تطبيقها على سطح الأرض والعناصر التي يتمّ تطبيقها على العناصر الأخرى). يتم رسم التراكب الذي يحتوي على مؤشر z مرتفع فوق التراكبات التي تحتوي على مؤشرات z أقل. يتم رسم عنصرَي تراكب بمؤشر z-index نفسه بترتيب عشوائي.
يُرجى العِلم أنّه يتم دائمًا رسم العلامات فوق العناصر المركّبة الأخرى، بغض النظر عن ملفه الشخصي z للعناصر المركّبة الأخرى.
اضبط هذه السمة على عنصر خيارات الشكل من خلال استدعاء *Options.zIndex()
.
إذا لم يتم تحديده، يكون فهرس z التلقائي هو 0
. بعد إضافة الشكل إلى
الخريطة، يمكن الوصول إلى مؤشر z من خلال
استدعاء getZIndex()
ويمكن تغييره من خلال استدعاء setZIndex()
.
مستوى الرؤية
يحدّد نطاق العرض ما إذا كان يجب رسم الشكل على الخريطة، حيث يشيرtrue
إلى أنّه يجب رسمه ويشيرfalse
إلى أنّه لا يجب رسمه. ويسمح لك
بعدم عرض شكل على الخريطة مؤقتًا. لإزالة الشكل نهائيًا
من الخريطة، استخدِم الرمز remove()
على هذا الشكل.
اضبط هذه السمة على عنصر خيارات الشكل من خلال استدعاء
*Options.visible()
. إذا لم يتم تحديد إذن الوصول، يكون إذن الوصول التلقائي هو true
.
بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى مستوى العرض من خلال
الاتصال بالرقم isVisible()
ويمكن تغييره من خلال الاتصال بالرقم setVisible()
.
ربط البيانات بشكل
يمكنك تخزين كائن بيانات عشوائي باستخدام خط متعدد الأضلاع أو مضلع أو دائرة
باستخدام طريقة setTag()
للشكل، واسترداد الكائن باستخدام getTag()
.
على سبيل المثال، استخدِم Polyline.setTag()
لتخزين ملف data
باستخدام خط متعدد الأضلاع، واستخدِم Polyline.getTag()
ل retrievingملف data.
تحدِّد التعليمة البرمجية أدناه علامة عشوائية (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"
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");
في ما يلي بعض الأمثلة على السيناريوهات التي يكون فيها من المفيد تخزين البيانات باستخدام الأشكال واستردادها:
- قد يقدّم تطبيقك أنواعًا مختلفة من الأشكال، وتريد التعامل معها بشكل مختلف عندما ينقر عليها المستخدم.
- قد تكون تتعامل مع نظام يتضمّن معرّفات سجلّات فريدة، ويمثّل فيه الشكل سجلّات معيّنة في ذلك النظام.
- قد تشير بيانات الشكل إلى الأولوية لتحديد فهرس z لل شكل.