الأشكال

اختيار النظام الأساسي: Android iOS JavaScript

خريطة عليها خطوط متعددة حمراء ثابتة

توفر واجهة برمجة التطبيقات لخرائط Google لنظام التشغيل 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() وتقديم قائمة جديدة بالنقاط للخطوط المتعددة.

يمكنك تخصيص مظهر الخطوط المتعددة قبل إضافتها إلى الخريطة وبعد إضافتها إلى الخريطة. ويمكنك الاطّلاع على القسم الذي يتناول تخصيص المظاهر أدناه للحصول على مزيد من التفاصيل.

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

هناك عدة طرق لتخصيص مظهر الخطوط المتعددة:

  • الخطوط المتعددة الألوان تضبط القطاعات المتعددة الألوان على ألوان مختلفة.
  • تؤدي الخطوط المتعددة المتدرجة إلى تلوين متعدد الخطوط باستخدام تدرج لونين.
  • تنشئ الخطوط المتعددة المختومة نمطًا متعدد الخطوط باستخدام صور نقطية متكرّرة.

لاستخدام عمليات تخصيص 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(). يوضح المثال التالي إنشاء خط متعدد الخطوط باللون الأحمر إلى الأصفر من حديقة حيوانات ووودلاند بارك إلى كيركلاند، واشنطن.

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().

عرض الكتابة

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