أشكال

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

خريطة بها خط أحمر خالص

تقدّم Google Maps API لأجهزة 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) لخدمة "خرائط Google" لنظام التشغيل Android، واستخدام أحدث حزمة تطوير برامج (SDK) لخدمة "خرائط 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

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

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

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

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

يجب أن يكون المضلّعان أدناه متكافئين، وسيؤدي طلب 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 واحد لإنشاء أشكال معقّدة، مثل حلقات مملوءة أو "Douts" (حيث تظهر المناطق المضلّعة داخل المضلع مثل "is;islands&quot). تكون الأشكال المعقدة دائمًا تركيبات لمسارات متعددة وأبسط.

يجب تحديد مسارين في المنطقة نفسها. يحدد المنطقتان الأكبر حجمًا منطقة التعبئة، وهي شكل مضلّع بسيط لا يحتوي على خيارات إضافية. بعد ذلك، عليك تمرير مسار ثانٍ إلى الطريقة 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 المحدد. ونظرًا لكيفية عرض إسقاط ماركاتور الذي تستخدمه واجهة برمجة التطبيقات للخرائط على الكرة الأرضية على سطح مستوٍ، سيظهر ذلك على شكل دائرة شبه مثالية على الخريطة عند وضعه بالقرب من خط الاستواء، وسيظهر بشكل غير دائري (على الشاشة) بشكل متزايد أثناء ابتعاد الدائرة عن خط الاستواء.

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