توفر واجهة برمجة تطبيقات خرائط Google لنظام التشغيل Android بعض الطرق البسيطة لإضافة أشكال إلى خرائطك من أجل تخصيصها لتطبيقك.
- خط
Polyline
عبارة عن سلسلة من أجزاء الخطوط المتصلة التي يمكن أن تشكل أي شكل تريده ويمكن استخدامها لوضع علامة على المسارات والمسارات على الخريطة. Polygon
هو شكل مغلق يمكن استخدامه لوضع علامة على المناطق على الخريطة.- يشير الرمز
Circle
إلى إسقاط دقيق جغرافيًا لدائرة على سطح الأرض مرسومة على الخريطة.
بالنسبة إلى جميع هذه الأشكال، يمكنك تخصيص مظهرها من خلال تغيير عدد من الخصائص.
عيّنات تعليمات برمجية
يشتمل البرنامج التعليمي حول إضافة المضلعات والخطوط المتعددة لتمثيل المناطق والمسارات على كل الرموز البرمجية لتطبيق Android بسيط.
بالإضافة إلى ذلك، يتضمن مستودع ApiDemos على GitHub نماذج توضّح استخدام الأشكال وميزاتها:
- CircleDemoActivity (Java / Kotlin): Circle
- PolygonDemoActivity (Java / Kotlin): مضلع
- PolylineDemoActivity (Java / Kotlin): Polyline
الخطوط المتعددة
تحدد الفئة 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()
وتقديم قائمة جديدة بالنقاط الخاصة بالخط المتعدد.
ويمكنك تخصيص مظهر الخط المتعدد قبل إضافته إلى الخريطة وبعد إضافته إلى الخريطة. راجِع القسم المتعلّق بتخصيص أشكال الظهور أدناه لمزيد من التفاصيل.
تخصيص الخطوط المتعددة
هناك عدة طرق لتخصيص مظهر الخطوط المتعددة:
- تضبط الخطوط المتعددة الألوان شرائح الخطوط المتعددة على ألوان مختلفة.
- الخطوط المتعددة المتدرجة تلون خطًا متعددًا باستخدام تدرج من لونين.
- تستخدم الخطوط المتعددة المختومة خطوطًا متعددة باستخدام الصور النقطية المتكررة.
لاستخدام تخصيصات Polyline، يجب استخدام 18.1.0 أو إصدار أحدث من حزمة تطوير البرامج (SDK) لـ "خرائط Google" لنظام التشغيل Android واستخدام أحدث إصدار من حزمة تطوير البرامج (SDK) لتطبيق "خرائط 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)));
إنشاء خط متعدد المستويات متدرج
يمكنك تحديد تدرج من خلال تحديد عددين صحيحين 32 بت ألفا-أحمر-أخضر-أزرق (ARGB)، لتحديد لون البداية والنهاية للرسم. عيِّن هذه السمة على كائن خيارات الشكل عن طريق استدعاء PolylineOptions.addSpan()
.
يوضح المثال التالي إنشاء خط متعدد الخطوط باللون الأحمر إلى الأصفر من
Woodland Park Zoo إلى كيركلاند، واشنطن.
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);
أحداث الدائرة
بشكل افتراضي، لا يمكن النقر على الدوائر. ويمكنك تفعيل إمكانية النقر وإيقافها من خلال استدعاء 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.strokeColor()
(أو
PolylineOptions.color()
في حالة وجود خط متعدد). في حال عدم تحديد اللون، يكون لون الشطب
التلقائي هو الأسود (Color.BLACK
).
بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى لون الشطب عن طريق استدعاء getStrokeColor()
(أو getColor()
للخط المتعدد) وقد يتم تغييره من خلال استدعاء setStrokeColor()
(setColor() for a polyline
).
لون التعبئة
لا ينطبق لون التعبئة إلا على المضلعات والدوائر. ولا ينطبق على الخطوط المتعددة لأنها ليس لها مساحات داخلية محددة. بالنسبة للمضلع، لا تعتبر المناطق داخل ثقوبها جزءًا من الداخل للمضلع ولن يتم تلوينها إذا تم تعيين لون التعبئة.
لون التعبئة هو عدد صحيح 32 بت ألفا-أحمر-أخضر-أزرق (ARGB) يحدد درجة تعتيم ولون الجزء الداخلي للشكل. عيِّن هذه السمة على كائن خيارات
الشكل عن طريق استدعاء *Options.fillColor()
. في حال عدم تحديد ذلك، سيكون
لون الشطب التلقائي شفافًا (Color.TRANSPARENT
).
بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى لون التعبئة عن طريق استدعاء getFillColor()
ويمكن تغييره عن طريق استدعاء setFillColor()
.
عرض الكتابة
عرض شطب السطر، كعدد عائم بوحدة pixels
(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
، أو استخدِم
طريقتَي getter وsetter المناسبتَين.
يحدّد المقتطف التالي غطاءً دائريًا عند بداية خط متعدد.
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 بكسل. تلميح: لتحديد عرض ضغط الخط المرجعي، افتح صورة الصورة النقطية بتكبيرها بنسبة 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
) للخطوط المتعددة المحددة:
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 للشكل.