أشكال

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

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

توفّر لك Google Maps API for 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 أو إصدار أحدث من حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع Android، واستخدام أحدث إصدار من حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لأجهزة Android.

إنشاء خط متعدد الألوان

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

يمكنك استخدام النطاقات لتلوين شرائح فردية من الخطوط المتعددة من خلال إنشاء كائنات StyleSpan وإضافتها إلى PolylineOptions باستخدام طرق addSpan() أو addSpans(). وحسب الإعدادات التلقائية، سيضبط كل عنصر في المصفوفة لون شريحة السطر المقابلة. يوضّح المثال التالي ضبط ألوان الشريحة لإنشاء خط متعدد مع تقسيمه إلى الأحمر والأخضر:

لغة Java


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(Color.RED))
        .addSpan(new StyleSpan(Color.GREEN)));

      

Kotlin


val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(StyleSpan(Color.RED))
        .addSpan(StyleSpan(Color.GREEN))
)

      

إنشاء خط متعدد الانحدار

خريطة تتضمّن خطًا متعدد الخطوط

يمكنك تحديد تدرج عن طريق تحديد عددين صحيحين 32 بت باللون الأحمر والأخضر والأزرق (ARGB) لتحديد لوني البداية والنهاية للضربة. اضبط هذه السمة على كائن خيارات الشكل عن طريق استدعاء PolylineOptions.addSpan(). يوضّح المثال التالي إنشاء خط متعدد متدرّج باللون الأحمر إلى الأصفر من حديقة حيوانات "وودلاند بارك" إلى "كيركلاند" بولاية واشنطن.

لغة Java


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));

      

Kotlin


val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(
            StyleSpan(
                StrokeStyle.gradientBuilder(
                    Color.RED,
                    Color.YELLOW
                ).build()
            )
        )
)

      

إنشاء خط متعدد مختوم

خريطة تتضمّن خطًا متعددًا مختومًا

يمكنك ضبط مظهر الخط المضلّع على زخرفة متكررة لصورة نقطية. لإجراء ذلك، أنشِئ StampStyle من TextureStyle، ثم اضبط هذه السمة على كائن الخيارات في شكل "عن طريق استدعاء PolylineOptions.addSpan()" كما هو موضّح هنا:

لغة Java


StampStyle stampStyle =
        TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build();
StyleSpan span = new StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build());
map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(span));

      

Kotlin


val stampStyle =
    TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build()
val span = StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build())
map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(span)
)

      

أحداث الخطوط المتعددة

وحسب الإعدادات التلقائية، لا يمكن النقر على الخطوط المتعددة. ويمكنك تفعيل إمكانية النقر وإيقافها من خلال الاتصال بالرقم Polyline.setClickable(boolean).

يمكنك استخدام OnPolylineClickListener للاستماع إلى أحداث النقر على خط متعدد قابل للنقر. لضبط هذا المستمع على الخريطة، اتصل برقم GoogleMap.setOnPolylineClickListener(OnPolylineClickListener). عندما ينقر المستخدم على خط متعدد، ستتلقّى معاودة اتصال onPolylineClick(Polyline).

مُضلع

تشبه كائنات Polygon الكائنات Polyline التي تتألف من سلسلة من التسلسلات بتسلسل تسلسلي. ومع ذلك، بدلاً من أن تكون المضلّعات مفتوحة، يتم تصميم المناطق المضلّعة لتحديد مناطق داخل حلقة مغلقة من الداخل.

يمكنك إضافة Polygon إلى الخريطة بالطريقة نفسها التي تضيف بها Polyline. عليك أولاً إنشاء كائن PolygonOptions وإضافة بعض النقاط إليه. ستشكل هذه النقاط مخطط المضلّع. بعد ذلك، عليك إضافة المضلّع إلى الخريطة من خلال استدعاء GoogleMap.addPolygon(PolygonOptions)، ما سيؤدي إلى عرض عنصر Polygon.

يضيف مقتطف الرمز التالي مستطيلاً إلى الخريطة.

لغة Java


// Instantiates a new Polygon object and adds points to define a rectangle
PolygonOptions polygonOptions = new PolygonOptions()
    .add(new LatLng(37.35, -122.0),
        new LatLng(37.45, -122.0),
        new LatLng(37.45, -122.2),
        new LatLng(37.35, -122.2),
        new LatLng(37.35, -122.0));

// Get back the mutable Polygon
Polygon polygon = map.addPolygon(polygonOptions);

      

Kotlin


// Instantiates a new Polygon object and adds points to define a rectangle
val rectOptions = PolygonOptions()
    .add(
        LatLng(37.35, -122.0),
        LatLng(37.45, -122.0),
        LatLng(37.45, -122.2),
        LatLng(37.35, -122.2),
        LatLng(37.35, -122.0)
    )

// Get back the mutable Polygon
val polygon = map.addPolygon(rectOptions)

      

لتغيير شكل المضلّع بعد إضافته، يمكنك استدعاء Polygon.setPoints() وتقديم قائمة جديدة بالنقاط لمخطّط المضلّع.

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

الإكمال التلقائي المضلّعي

يتكون المضلّع في المثال أعلاه من خمسة إحداثيات، ولكن يُرجى ملاحظة أن الإحداثيات الأولى والأخيرة هي الموقع نفسه، والذي يحدد الحلقة. من الناحية العملية، بما أنّ المضلّعات تحدّد المناطق المغلقة، لا تحتاج إلى تحديد هذا التنسيق الأخير. وإذا اختلف التنسيق الأخير عن الأول، ستعمل "واجهة برمجة التطبيقات" على "إغلاق" المضلّع تلقائيًا من خلال إلحاق التنسيق الأول في نهاية تسلسل الإحداثيات.

إنّ المضلّعيَين الواردَين أدناه مكافئان، وسيؤدي عرض polygon.getPoints() لكلّ منهما إلى عرض النقاط الأربعة كلها.

لغة Java


Polygon polygon1 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(0, 0))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

Polygon polygon2 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

      

Kotlin


val polygon1 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(0.0, 0.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)
val polygon2 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)

      

إنشاء مضلع مجوف

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

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

سينشئ المقتطف أدناه مستطيلاً واحدًا مع فتحة مستطيلة أصغر حجمًا.

لغة Java


List<LatLng> hole = Arrays.asList(new LatLng(1, 1),
    new LatLng(1, 2),
    new LatLng(2, 2),
    new LatLng(2, 1),
    new LatLng(1, 1));
Polygon hollowPolygon = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(3, 0),
        new LatLng(0, 0))
    .addHole(hole)
    .fillColor(Color.BLUE));

      

Kotlin


val hole = listOf(
    LatLng(1.0, 1.0),
    LatLng(1.0, 2.0),
    LatLng(2.0, 2.0),
    LatLng(2.0, 1.0),
    LatLng(1.0, 1.0)
)
val hollowPolygon = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(3.0, 0.0),
            LatLng(0.0, 0.0)
        )
        .addHole(hole)
        .fillColor(Color.BLUE)
)

      

يظهر المضلع المجوف على الخريطة كما هو موضح أدناه:

خريطة باستخدام خط مستطيل مجوف

أحداث المضلّع

لا يمكن النقر على المضلّعات تلقائيًا. ويمكنك تفعيل إمكانية النقر وإيقافها من خلال الاتصال بالرقم Polygon.setClickable(boolean).

استخدِم OnPolygonClickListener للاستماع إلى النقر على الأحداث في شكل مضلع قابل للنقر. لضبط هذا المستمع على الخريطة، اتصل برقم GoogleMap.setOnPolygonClickListener(OnPolygonClickListener). عندما ينقر المستخدم على المضلّع، ستتلقّى رد اتصال onPolygonClick(Polygon).

دوائر

خريطة بشكل دائرة

بالإضافة إلى فئة Polygon عامة، تتضمّن Maps API أيضًا فئات محدّدة لعناصر Circle لتبسيط عملية إنشائها.

لإنشاء دائرة، يجب تحديد السمتَين التاليتَين:

  • center كـ LatLng.
  • radius متر

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

لتغيير شكل الدائرة بعد إضافتها، يمكنك الاتصال بالرقم Circle.setRadius() أو Circle.setCenter() وتقديم قيم جديدة.

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

يضيف مقتطف الرمز التالي دائرة إلى الخريطة من خلال إنشاء عنصر CircleOptions والاتصال GoogleMap.addCircle(CircleOptions):

لغة Java


// Instantiates a new CircleOptions object and defines the center and radius
CircleOptions circleOptions = new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000); // In meters

// Get back the mutable Circle
Circle circle = map.addCircle(circleOptions);

      

Kotlin


// Instantiates a new CircleOptions object and defines the center and radius
val circleOptions = CircleOptions()
    .center(LatLng(37.4, -122.1))
    .radius(1000.0) // In meters

// Get back the mutable Circle
val circle = map.addCircle(circleOptions)

      

أحداث دائرية

حسب الإعداد التلقائي، لا يمكن النقر على الدوائر. يمكنك تفعيل إمكانية النقر وإيقافها من خلال الاتصال بالرقم GoogleMap.addCircle() باستخدام الرقم CircleOptions.clickable(boolean) أو الاتصال بالرقم Circle.setClickable(boolean).

يمكنك استخدام أداة OnCircleClickListener للاستماع إلى الأحداث والنقر عليها في دائرة قابلة للنقر. لضبط هذا المستمع على الخريطة، اتصل برقم GoogleMap.setOnCircleClickListener(OnCircleClickListener).

عندما ينقر مستخدم على دائرة، ستتلقّى ردًا من onCircleClick(Circle) على النحو الموضّح في نموذج الرمز التالي:

لغة Java


Circle circle = map.addCircle(new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000)
    .strokeWidth(10)
    .strokeColor(Color.GREEN)
    .fillColor(Color.argb(128, 255, 0, 0))
    .clickable(true));

map.setOnCircleClickListener(new GoogleMap.OnCircleClickListener() {
    @Override
    public void onCircleClick(Circle circle) {
        // Flip the r, g and b components of the circle's stroke color.
        int strokeColor = circle.getStrokeColor() ^ 0x00ffffff;
        circle.setStrokeColor(strokeColor);
    }
});

      

Kotlin


val circle = map.addCircle(
    CircleOptions()
        .center(LatLng(37.4, -122.1))
        .radius(1000.0)
        .strokeWidth(10f)
        .strokeColor(Color.GREEN)
        .fillColor(Color.argb(128, 255, 0, 0))
        .clickable(true)
)
map.setOnCircleClickListener {
    // Flip the r, g and b components of the circle's stroke color.
    val strokeColor = it.strokeColor xor 0x00ffffff
    it.strokeColor = strokeColor
}

      

تخصيص المظاهر

يمكنك تغيير مظهر الشكل قبل أن تتم إضافته إلى الخريطة (من خلال تحديد الخاصية المطلوبة على عنصر الخيارات) أو بعد إضافته إلى الخريطة. ويتم أيضًا عرض الخوارزميَّة لجميع المواقع الإلكترونية بحيث يمكنك الوصول بسهولة إلى الحالة الحالية للشكل.

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

لغة Java


Polyline polyline = map.addPolyline(new PolylineOptions()
    .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734))
    .width(25)
    .color(Color.BLUE)
    .geodesic(true));

      

Kotlin


val polyline = map.addPolyline(
    PolylineOptions()
        .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734))
        .width(25f)
        .color(Color.BLUE)
        .geodesic(true)
)

      

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

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

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

لون الشطب

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

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

لون التعبئة

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

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

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

عرض الكتابة

عرض ضغطة السطر، على شكل عائم بوحدات بكسل (بكسل). لا يتم تغيير عرض النطاق عند تكبيره على الخريطة (أي أن الشكل سيحظى بعرض العرض نفسه على جميع مستويات التكبير أو التصغير). اضبُط هذه السمة على عنصر خيار الشكل من خلال استدعاء *Options.strokeWidth() (أو PolylineOptions.width() لسطر متعدد الأبعاد). إذا لم يتم تحديد القيمة، سيكون الحد التلقائي للرسم البياني 10 بكسل.

بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى عرض الضربة من خلال الاتصال بـ getStrokeWidth() (أو getWidth() للخط الخطي) ويمكن تغييره عن طريق طلب setStrokeWidth() (setWidth() for a polyline).

نمط رسم المفاتيح

نمط الخط التلقائي هو خط متصل للخطوط المتعددة ومخططات المضلعات والدوائر. يمكنك تحديد نمط سباحة مخصّص لكائنات PatternItem، حيث يكون لكل عنصر شرطة أو نقطة أو فجوة.

يضبط النموذج التالي نمطًا لتسلسل متعدد الأضلاع على التسلسل المتكرر للنقطة، يليه فجوة طولها 20 بكسل وشرطة طول 30 بكسل وفجوة أخرى تبلغ 20 بكسل.

لغة Java


List<PatternItem> pattern = Arrays.asList(
    new Dot(), new Gap(20), new Dash(30), new Gap(20));
polyline.setPattern(pattern);

      

Kotlin


val pattern = listOf(
    Dot(), Gap(20F), Dash(30F), Gap(20F)
)
polyline.pattern = pattern

      

كرر النمط على طول الخط، بدءًا من العنصر الأول في النمط في أول انعكاس محدد للشكل.

أنواع المفاصل

بالنسبة إلى الخطوط المضلِّعة ومخططات المضلّعات، يمكنك تحديد مجسم دائري أو دائري JointType لاستبدال نوع المفصل التلقائي الثابت.

يُطبّق النموذج التالي نوع الفاصل الدائري على الخط المضلع:

لغة Java


polyline.setJointType(JointType.ROUND);

      

Kotlin


polyline.jointType = JointType.ROUND

      

يؤثر نوع المفصل في المنحنيات الداخلية في السطر. إذا كان الخط يحتوي على نمط ضربة يتضمن شَرطة، يتم تطبيق نوع المفصل أيضًا عند تخطّي الشرطة. لا تؤثر أنواع المفاصل على النقاط، لأنها دائمًا دائرية.

الأحرف الكبيرة

يمكنك تحديد نمط Cap لكل طرف من الخطوط المتعددة. تكون الخيارات مؤقتة (تلقائية) أو مربّعة أو دائرية أو صورة نقطية مخصّصة. اضبط النمط في PolylineOptions.startCap و PolylineOptions.endCap أو استخدِم الطُرق المناسبة لتحديد الغيار مرة أخرى.

يحدد المقتطف التالي حدًا دائريًا في بداية الخط المضلّع.

لغة Java


polyline.setStartCap(new RoundCap());

      

Kotlin


polyline.startCap = RoundCap()

      

يحدِّد المقتطف التالي صورة نقطية مخصّصة لنهاية النهاية:

لغة Java


polyline.setEndCap(
    new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));

      

Kotlin


polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)

      

عند استخدام صورة نقطية مخصّصة، يجب تحديد عرض ضربة مرجعية بالبكسل. وتوسِّع واجهة برمجة التطبيقات الصورة المصغّرة وفقًا لذلك. عرض ضربة المرجع هو عرض الضربة الذي استخدمته عند تصميم صورة نقطية لحد الرسم، على البُعد الأصلي للصورة. يبلغ عرض الخط التلقائي للرسم البياني 10 بكسل. تلميح: لتحديد عرض ضغطة المرجع، افتح صورة الصورة المصغّرة عند التكبير 100% في محرِّر الصور، ثم ارسم العرض المطلوب لضربات الخط ذات الصلة بالصورة.

في حال استخدام BitmapDescriptorFactory.fromResource() لإنشاء صورة نقطية، تأكَّد من استخدام مورد مستقل لا يتضمن الكثافة (nodpi).

شرائح جيوديسية

لا ينطبق الإعداد الجيوسيائي إلا على الخطوط المتعددة والمضلعات. ولا ينطبق على الدوائر لأنه لم يتم تحديدها كمجموعة من الشرائح.

يحدد الإعداد الجيوسيدي كيفية رسم شرائح الخط بين الرؤوس المتتالية في المضلع/المضلّع. الشرائح الجيوديسية هي تلك التي تتبع أقصر مسار على سطح الأرض (كوكة) وغالبًا ما تظهر كخطوط منحنية على خريطة مع إسقاط ماركاتور. يتم رسم الشرائح غير الجيوديسية على شكل خطوط مستقيمة على الخريطة.

اضبط هذه السمة على كائن خيار الشكل عن طريق طلب *Options.geodesic() حيث يشير true إلى أنّه يجب رسم الشرائح كهندسة جيوديسية ويشير false إلى أنّه يجب رسم الأجزاء في شكل خطوط مستقيمة. إذا لم يتم تحديد هذه القيمة، ستكون القيمة التلقائية هي الشرائح غير الجيوديسية (false).

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

فهرس Z

يحدد فهرس z ترتيب تسلسل استدعاء الدوال البرمجية لهذا الشكل، بالنسبة إلى التراكبات الأخرى (الأشكال الأخرى والتراكبات الأرضية وتراكبات الصور) على الخريطة. يتم رسم تراكب مركّب ذي z مرتفع فوق التراكبات التي تحتوي على فهارس z منخفضة. يتم رسم تراكبَين بمؤشر z نفسه بترتيب عشوائي.

يُرجى العِلم أنّ العلامات دائمًا مرسومة فوق تراكبات أخرى، بغض النظر عن فهرس z للتراكبات الأخرى.

يمكنك ضبط هذه السمة في عنصر خيارات الشكل عن طريق طلب *Options.zIndex(). وفي حال عدم تحديد هذا الحقل، سيكون فهرس z التلقائي هو 0. بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى فهرس z من خلال استدعاء getZIndex() وقد يتم تغييره عن طريق الاتصال بـ setZIndex().

مستوى العرض

يحدِّد مستوى الرؤية ما إذا كان يجب رسم الشكل على الخريطة، حيث يشير true إلى أنه يجب رسمه ويشير false إلى عدم رسمه. يسمح لك ذلك بعدم عرض شكل إعلان على الخريطة مؤقتًا. لإزالة شكل من الخريطة نهائيًا، عليك الاتصال بـ remove() على هذا الشكل.

اضبط هذه السمة على عنصر خيارات الشكل عن طريق طلب *Options.visible(). وإذا لم يتم تحديد هذه القيمة، مستوى الرؤية التلقائي هو true. بعد إضافة الشكل إلى الخريطة، يمكن الوصول إلى الرؤية عن طريق الاتصال بـ isVisible() ويمكن تغييرها عن طريق الاتصال بـ setVisible().

ربط البيانات بشكل

يمكنك تخزين عنصر بيانات عشوائي باستخدام شكل متعدد الأضلاع أو مضلع أو دائرة باستخدام طريقة setTag() للشكل واسترداد العنصر باستخدام getTag(). على سبيل المثال، يمكنك طلب Polyline.setTag() لتخزين كائن بيانات باستخدام خط متعدد، واستدعاء Polyline.getTag() لاسترداد عنصر البيانات.

يحدِّد الرمز أدناه علامة عشوائية (A) لخط الخطوط المحدَّد:

لغة Java


Polyline polyline = map.addPolyline((new PolylineOptions())
    .clickable(true)
    .add(new LatLng(-35.016, 143.321),
        new LatLng(-34.747, 145.592),
        new LatLng(-34.364, 147.891),
        new LatLng(-33.501, 150.217),
        new LatLng(-32.306, 149.248),
        new LatLng(-32.491, 147.309)));

polyline.setTag("A");

      

Kotlin


val polyline = map.addPolyline(
    PolylineOptions()
        .clickable(true)
        .add(
            LatLng(-35.016, 143.321),
            LatLng(-34.747, 145.592),
            LatLng(-34.364, 147.891),
            LatLng(-33.501, 150.217),
            LatLng(-32.306, 149.248),
            LatLng(-32.491, 147.309)
        )
)
polyline.tag = "A"

      

في ما يلي بعض الأمثلة على السيناريوهات التي يكون فيها تخزين البيانات واستردادها بأشكال مناسبة:

  • قد يلبي تطبيقك أنواعًا مختلفة من الأشكال، وتريد التعامل معه بشكل مختلف عندما ينقر المستخدم عليه.
  • يُحتمل أنّك تواجه نظامًا له معرّفات سجلّات فريدة، حيث تمثّل الأشكال سجلّات محدّدة في هذا النظام.
  • قد تشير بيانات الشكل إلى أولوية لتحديد فهرس z للشكل.