أشكال

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
اختيار نظام أساسي: Android iOS JavaScript

خريطة بخط متعدد الأضلاع أحمر اللون

توفر واجهة برمجة التطبيقات لخرائط Google لأجهزة Android بعض الطرق البسيطة لإضافة أشكال إلى خرائطك من أجل تخصيصها لتطبيقك.

  • Polyline عبارة عن سلسلة من أجزاء الخطوط المتصلة التي يمكن أن تشكل أي شكل تريده، ويمكن استخدامها لوضع علامة على المسارات والمسارات على الخريطة.
  • Polygon هو شكل محاط يمكن استخدامه لوضع علامات على المناطق على الخريطة.
  • Circle هو إسقاط دقيق جغرافيًا لدائرة على سطح الأرض مرسوم على الخريطة.

بالنسبة إلى جميع هذه الأشكال، يمكنك تخصيص مظهرها عن طريق تغيير عدد من الخصائص.

عيّنات تعليمات برمجية

يتضمن البرنامج التعليمي حول إضافة المضلعات والخطوط المتعددة لتمثيل المناطق والمسارات كل شفرات تطبيق Android البسيط.

بالإضافة إلى ذلك، يتضمن مستودع ApiDemos على GitHub نماذج توضح استخدام الأشكال وميزاتها:

الخطوط المتعددة

تحدد فئة 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 أو إصدار أحدث من SDK للخرائط على أجهزة Android واستخدام أحدث SDK للخرائط في عارض 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 عامة، تتضمن أيضًا API للخرائط فئات محددة لكائنات Circle، لتبسيط البناء.

لإنشاء دائرة، يجب تحديد الخاصيتين التاليتين:

  • center كـ LatLng.
  • radius بالأمتار.

يتم تعريف الدائرة بعد ذلك بأنها مجموعة جميع النقاط على سطح الأرض والتي على بعد radius متر من center المحدد. ونظرًا لكيفية عرض إسقاط ماركاتور الذي تستخدمه واجهة برمجة التطبيقات للخرائط على سطح مستوٍ، فسيظهر هذا على شكل دائرة شبه مثالية على الخريطة عند موقعها بالقرب من خط الاستواء، وسيظهر بشكل غير دائري على نحو متزايد (على الشاشة) عندما تتحرك الدائرة بعيدًا عن خط الاستواء.

لتغيير شكل الدائرة بعد إضافتها، يمكنك استدعاء 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)
)

      

تظهر الخريطة كما هو موضح أدناه:

خريطة تحتوي على خط متعدد من ملبورن إلى بيرث

ملاحظة: في حين يمكن تطبيق معظم هذه الأشكال على أي من الأشكال الموضّحة، قد لا تكون بعض الخصائص منطقية لأشكال معيّنة (على سبيل المثال، لا يمكن أن يكون للخط المتعدد لون تعبئة لأنه لا يحتوي على تصميم داخلي).

لون الشطب

لون الشطب عبارة عن عدد صحيح 32 بت باللون الأحمر ألفا والأزرق (ARGB) يحدد تعتيم ولون شطب الشكل. يمكنك إعداد هذه الخاصية على كائن خيارات الشكل عن طريق استدعاء *Options.strokeColor() (أو PolylineOptions.color() في حالة المضلع). إذا لم يتم تحديده، فسيكون لون الشطب الافتراضي أسود (Color.BLACK).

بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى لون الشطب من خلال استدعاء getStrokeColor() (أو getColor() للخط المتعدد) ويمكن تغييره عن طريق استدعاء setStrokeColor() (setColor() for a polyline).

لون التعبئة

لا ينطبق لون التعبئة إلا على المضلعات والدوائر. ولا ينطبق ذلك على الخطوط المتعددة، حيث إنها لا تحتوي على تصميمات داخلية محددة. بالنسبة إلى المضلع، فإن المناطق داخل ثقوبه ليست جزءًا من الداخل من المضلع ولن يتم تلوينها إذا تم تعيين لون التعبئة.

لون التعبئة هو عدد صحيح بحجم 32 بت باللون ألفا والأحمر والأخضر والأزرق (ARGB)، ويحدد تعتيم ولون التصميم الداخلي للشكل. اضبط هذه الخاصية على كائن خيارات الشكل من خلال استدعاء *Options.fillColor(). إذا لم يتم تحديده، يكون لون الشطب الافتراضي شفافًا (Color.TRANSPARENT).

بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى لون التعبئة من خلال استدعاء getFillColor() ويمكن تغييره عن طريق الاتصال بـ setFillColor().

عرض الكتابة

عرض شطب الخط كطائر بوحدات البكسل (px). لا يتم ضبط العرض عند تكبير الخريطة (أي أن الشكل سيكون له عرض الشطب نفسه على جميع مستويات التكبير أو التصغير). يمكنك تعيين هذه الخاصية على كائن الخيار للشكل عن طريق استدعاء *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 للشكل.