شکل ها

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.
پلتفرم را انتخاب کنید: Android iOS JavaScript

نقشه با چند خط قرمز جامد

Google Maps API برای اندروید راه‌های ساده‌ای را برای اضافه کردن اشکال به نقشه‌های خود به منظور سفارشی کردن آنها برای برنامه خود ارائه می‌کند.

  • Polyline مجموعه‌ای از بخش‌های خط متصل است که می‌تواند هر شکلی را که می‌خواهید تشکیل دهد و برای علامت‌گذاری مسیرها و مسیرها روی نقشه استفاده شود.
  • Polygon یک شکل محصور است که می تواند برای علامت گذاری مناطق روی نقشه استفاده شود.
  • Circle یک طرح دقیق جغرافیایی از یک دایره در سطح زمین است که بر روی نقشه ترسیم شده است.

برای همه این اشکال، می‌توانید ظاهر آن‌ها را با تغییر تعدادی ویژگی سفارشی کنید.

نمونه کد

آموزش افزودن چند ضلعی و چند خطی برای نمایش مناطق و مسیرها شامل تمام کدهای یک برنامه ساده اندروید است.

علاوه بر این، مخزن ApiDemos در GitHub شامل نمونه هایی است که استفاده از اشکال و ویژگی های آنها را نشان می دهد:

چند خط

کلاس Polyline مجموعه ای از بخش های خط متصل را روی نقشه تعریف می کند. یک شی Polyline از مجموعه‌ای از مکان‌های LatLng شده است و مجموعه‌ای از بخش‌های خط ایجاد می‌کند که آن مکان‌ها را در یک دنباله مرتب به هم متصل می‌کند.

این ویدئو ایده هایی را ارائه می دهد که چگونه به کاربران خود کمک کنید تا به جایی که می خواهند برسند، با استفاده از چند خطوط برای ترسیم یک مسیر روی نقشه.

برای ایجاد یک Polyline ابتدا یک شی PolylineOptions ایجاد کرده و به آن امتیاز اضافه کنید. نقاط نشان دهنده یک نقطه در سطح زمین هستند و به عنوان یک جسم LatLng بیان می شوند. پاره های خط بین نقاط بر اساس ترتیبی که آنها را به شی PolylineOptions اضافه می کنید رسم می شوند.

برای افزودن امتیاز به یک شی PolylineOptions ، PolylineOptions.add() را فراخوانی کنید. توجه داشته باشید که این روش تعداد متغیری از پارامترها را می گیرد، بنابراین می توانید چندین نقطه را در یک زمان اضافه کنید (همچنین می توانید PolylineOptions.addAll(Iterable<LatLng>) را در صورتی که نقاط از قبل در لیست هستند فراخوانی کنید).

سپس می توانید با فراخوانی GoogleMap.addPolyline(PolylineOptions) خط را به نقشه اضافه کنید. این روش یک شی Polyline را برمی گرداند که با آن می توانید چند خط را در زمان دیگری تغییر دهید.

قطعه کد زیر نحوه اضافه کردن یک مستطیل به نقشه را نشان می دهد:

جاوا


// 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);

      

کاتلین


// 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

چندین راه برای سفارشی کردن ظاهر پلی لاین ها وجود دارد:

  • چند خطوط چند رنگ ، بخش های چند خط را به رنگ های مختلف تنظیم می کنند.
  • چند خطوط گرادیان با استفاده از گرادیان دو رنگ، چند خط را رنگ می کنند.
  • چند خطوط مهر شده با استفاده از بیت مپ های تکراری به چند خط استایل دهی می دهند.

برای استفاده از سفارشی‌سازی‌های Polyline، باید از نسخه 18.1.0 یا جدیدتر Maps SDK برای Android استفاده کنید و از جدیدترین Maps SDK برای رندر Android استفاده کنید.

ایجاد یک خط چند رنگی

نقشه با چند خط چند رنگ

با ایجاد اشیاء StyleSpan و افزودن آنها به PolylineOptions با استفاده از addSpan() یا addSpans() می توانید از spans برای رنگ آمیزی جداگانه بخش های یک polyline استفاده کنید. به طور پیش فرض، هر آیتم در آرایه رنگ بخش خط مربوطه را تعیین می کند. مثال زیر تنظیم رنگ های بخش را برای ایجاد یک چند خط با بخش های قرمز و سبز نشان می دهد:

جاوا


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)));

      

کاتلین


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) یک گرادیان تعریف کنید تا رنگ های آغاز و پایان stroke را مشخص کنید. با فراخوانی PolylineOptions.addSpan() این ویژگی را روی شی گزینه های شکل تنظیم کنید. مثال زیر ایجاد یک پلی لاین گرادیان قرمز به زرد از باغ وحش پارک وودلند تا کرکلند، WA را نشان می دهد.

جاوا


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

      

کاتلین


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

      

ایجاد یک پلی لاین مهر شده

نقشه با چند خط مهر شده

شما می توانید ظاهر یک polyline را به یک بافت بیت مپ تکراری تنظیم کنید. برای انجام این کار، یک StampStyle of TextureStyle ایجاد کنید، سپس با فراخوانی PolylineOptions.addSpan() این ویژگی را روی شی گزینه های شکل تنظیم کنید.

جاوا


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));

      

کاتلین


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 هستند زیرا از یک سری مختصات در یک دنباله مرتب تشکیل شده اند. با این حال، به جای باز بودن، چند ضلعی ها به گونه ای طراحی شده اند که مناطقی را در یک حلقه بسته با داخل پر شده تعریف کنند.

می‌توانید به همان روشی که Polyline اضافه می‌کنید، یک Polygon به نقشه اضافه کنید. ابتدا یک شی PolygonOptions ایجاد کنید و چند امتیاز به آن اضافه کنید. این نقاط طرح کلی چند ضلعی را تشکیل می دهند. سپس با فراخوانی GoogleMap.addPolygon(PolygonOptions) چند ضلعی را به نقشه اضافه می‌کنید که یک شی Polygon برمی‌گرداند.

قطعه کد زیر یک مستطیل به نقشه اضافه می کند.

جاوا


// 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);

      

کاتلین


// 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() را فراخوانی کنید و لیست جدیدی از نقاط را برای طرح کلی چند ضلعی تهیه کنید.

شما می توانید ظاهر چند ضلعی را هم قبل از افزودن به نقشه و هم بعد از اضافه شدن به نقشه سفارشی کنید. برای جزئیات بیشتر به بخش سفارشی کردن ظاهرها در زیر مراجعه کنید.

تکمیل خودکار چند ضلعی

چند ضلعی در مثال بالا از پنج مختصات تشکیل شده است، اما توجه کنید که اولین و آخرین مختصات همان مکان هستند که حلقه را مشخص می کند. با این حال، در عمل، از آنجایی که چند ضلعی ها مناطق بسته را تعریف می کنند، نیازی به تعریف آخرین مختصات ندارید. اگر آخرین مختصات با مختصات اول متفاوت باشد، API به طور خودکار چند ضلعی را با اضافه کردن اولین مختصات در انتهای دنباله مختصات "بسته" می کند.

دو چند ضلعی زیر معادل هستند و فراخوانی polygon.getPoints() برای هر یک از آنها، تمام 4 نقطه را برمی گرداند.

جاوا


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));

      

کاتلین


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() منتقل کنید. هنگامی که مسیر دوم و کوچکتر به طور کامل توسط مسیر بزرگتر محصور می شود، به نظر می رسد که قطعه ای از چند ضلعی حذف شده است. اگر حفره طرح کلی چند ضلعی را قطع کند، چند ضلعی بدون هیچ پر کردنی نمایش داده می شود.

قطعه زیر یک مستطیل منفرد با یک سوراخ مستطیلی کوچکتر ایجاد می کند.

جاوا


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));

      

کاتلین


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 که توسط Maps API استفاده می‌شود، یک کره را روی یک سطح صاف نشان می‌دهد، زمانی که در نزدیکی خط استوا قرار گیرد، به صورت یک دایره تقریباً کامل روی نقشه ظاهر می‌شود و به طور فزاینده‌ای غیر دایره‌ای (روی صفحه) ظاهر می‌شود. دایره از خط استوا دور می شود.

برای تغییر شکل دایره پس از اضافه شدن، می توانید Circle.setRadius() یا Circle.setCenter() را فراخوانی کنید و مقادیر جدیدی ارائه دهید.

می توانید ظاهر دایره را هم قبل از افزودن به نقشه و هم بعد از اضافه شدن به نقشه سفارشی کنید. برای جزئیات بیشتر به بخش سفارشی کردن ظاهرها در زیر مراجعه کنید.

قطعه کد زیر با ساختن یک شی CircleOptions و فراخوانی GoogleMap.addCircle(CircleOptions) یک دایره به نقشه اضافه می کند:

جاوا


// 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);

      

کاتلین


// 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) دریافت خواهید کرد:

جاوا


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);
    }
});

      

کاتلین


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
}

      

سفارشی کردن ظاهر

شما می توانید ظاهر یک شکل را قبل از اضافه شدن به نقشه (با مشخص کردن ویژگی مورد نظر در شی گزینه) و یا بعد از اضافه شدن آن به نقشه تغییر دهید. همچنین دریافت کننده ها برای همه ویژگی ها در معرض دید قرار می گیرند تا بتوانید به راحتی به وضعیت فعلی شکل دسترسی داشته باشید.

قطعه زیر یک پلی خط آبی ضخیم با بخش های ژئودزیکی از ملبورن تا پرث اضافه می کند. بخش های زیر این ویژگی ها را با جزئیات بیشتری توضیح خواهند داد.

جاوا


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));

      

کاتلین


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

      

نقشه به شکل زیر ظاهر می شود:

نقشه با چند خط از ملبورن تا پرث

توجه: در حالی که اکثر این موارد را می توان برای هر یک از اشکال توصیف شده اعمال کرد، برخی از ویژگی ها ممکن است برای اشکال خاصی معنی نداشته باشند (به عنوان مثال، یک Polyline نمی تواند رنگ پرکننده داشته باشد زیرا داخلی ندارد).

رنگ ضربه ای

رنگ stroke یک عدد صحیح 32 بیتی آلفا-قرمز-سبز-آبی (ARGB) است که کدورت و رنگ سکته مغزی شکل را مشخص می کند. با فراخوانی *Options.strokeColor() (یا PolylineOptions.color() در مورد چند خط، این ویژگی را روی شی گزینه های شکل تنظیم کنید. اگر مشخص نشده باشد، رنگ پیش‌فرض خط مشکی است ( Color.BLACK ).

پس از اینکه شکل به نقشه اضافه شد، می‌توان با فراخوانی getStrokeColor() (یا getColor() برای یک polyline) به رنگ stroke دسترسی پیدا کرد و می‌توان با فراخوانی setStrokeColor() ( setColor() for a polyline تغییر داد.

رنگ پر کنید

رنگ پر فقط برای چند ضلعی ها و دایره ها اعمال می شود. این برای پلی لاین ها اعمال نمی شود، زیرا آنها فضای داخلی مشخصی ندارند. برای یک چند ضلعی، نواحی داخل سوراخ های آن بخشی از فضای داخلی چند ضلعی نیستند و اگر رنگ پر شده باشد، رنگی نمی شوند.

رنگ پر یک عدد صحیح 32 بیتی آلفا-قرمز-سبز-آبی (ARGB) است که کدورت و رنگ داخلی شکل را مشخص می کند. با فراخوانی *Options.fillColor() این ویژگی را روی شی گزینه های شکل تنظیم کنید. اگر مشخص نشده باشد، رنگ پیش‌فرض استروک شفاف است ( Color.TRANSPARENT ).

پس از اینکه شکل به نقشه اضافه شد، رنگ پر را می توان با فراخوانی getFillColor() و با فراخوانی setFillColor() تغییر داد.

عرض ضربه

عرض خط خط، به عنوان یک شناور در پیکسل (px). وقتی نقشه بزرگ‌نمایی می‌شود، عرض مقیاس نمی‌شود (یعنی، یک شکل در تمام سطوح بزرگ‌نمایی، عرض حرکت یکسانی خواهد داشت). با فراخوانی *Options.strokeWidth() (یا PolylineOptions.width() برای یک polyline، این ویژگی را روی شی گزینه شکل تنظیم کنید. اگر مشخص نشده باشد، ضربه پیش فرض با 10 پیکسل است.

پس از اینکه شکل به نقشه اضافه شد، می‌توان با فراخوانی getStrokeWidth() (یا getWidth() برای چند خط) به عرض استروک دسترسی پیدا کرد و می‌توان با فراخوانی setStrokeWidth() ( setWidth() for a polyline تغییر کرد.

الگوی سکته مغزی

الگوی stroke پیش فرض یک خط ثابت برای چند خط و برای خطوط چند ضلعی و دایره است. شما می توانید یک الگوی ضربه ای سفارشی از اشیاء PatternItem را مشخص کنید، جایی که هر مورد یک خط تیره، یک نقطه یا یک شکاف است.

نمونه زیر الگوی یک چندخط را روی یک دنباله مکرر از یک نقطه تنظیم می کند، به دنبال آن یک شکاف به طول 20 پیکسل، یک خط تیره به طول 30 پیکسل و یک شکاف 20 پیکسلی دیگر.

جاوا


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

      

کاتلین


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

      

این الگو در امتداد خط تکرار می شود و با اولین مورد الگو در اولین راس مشخص شده برای شکل شروع می شود.

انواع مفصل

برای چند خطوط و خطوط کلی چند ضلعی ها، می توانید یک JointType مخروطی یا گرد را برای جایگزینی نوع اتصال میتر ثابت پیش فرض تعیین کنید.

نمونه زیر یک نوع اتصال گرد را به پلی لاین اعمال می کند:

جاوا


polyline.setJointType(JointType.ROUND);

      

کاتلین


polyline.jointType = JointType.ROUND

      

نوع مفصل بر خمیدگی های داخلی در خط تأثیر می گذارد. اگر خط دارای الگوی سکته‌ای است که شامل خط تیره‌ها می‌شود، نوع اتصال زمانی که خط تیره روی مفصل قرار می‌گیرد نیز اعمال می‌شود. انواع مفاصل بر نقاط تأثیر نمی گذارند، زیرا همیشه دایره ای هستند.

کلاهک های خط

شما می توانید یک سبک Cap برای هر انتهای یک چند خط مشخص کنید. گزینه ها لب به لب (پیش فرض)، مربع، گرد یا یک بیت مپ سفارشی هستند. استایل را در PolylineOptions.startCap و PolylineOptions.endCap تنظیم کنید یا از متدهای گیرنده و تنظیم کننده مناسب استفاده کنید.

قطعه زیر یک کلاهک گرد را در ابتدای یک چند خط مشخص می کند.

جاوا


polyline.setStartCap(new RoundCap());

      

کاتلین


polyline.startCap = RoundCap()

      

قطعه زیر یک بیت مپ سفارشی را برای سرپوش انتهایی مشخص می کند:

جاوا


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

      

کاتلین


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

      

هنگامی که از یک بیت مپ سفارشی استفاده می کنید، باید عرض خط مرجع را بر حسب پیکسل مشخص کنید. API نقشه بیت را بر این اساس مقیاس می کند. عرض stroke مرجع، عرض stroke است که هنگام طراحی تصویر بیت مپ برای درپوش، در بعد اصلی تصویر استفاده می‌کنید. عرض stroke مرجع پیش فرض 10 پیکسل است. نکته: برای تعیین عرض خط مرجع، تصویر بیت مپ خود را با زوم 100% در ویرایشگر تصویر باز کنید و عرض مورد نظر خط خط را نسبت به تصویر رسم کنید.

اگر از BitmapDescriptorFactory.fromResource() برای ایجاد بیت مپ استفاده می کنید، مطمئن شوید که از یک منبع مستقل از چگالی ( nodpi ) استفاده می کنید.

بخش های ژئودزیکی

تنظیمات geodesic فقط برای چند خط و چند ضلعی اعمال می شود. برای حلقه ها اعمال نمی شود زیرا آنها به عنوان مجموعه ای از بخش ها تعریف نشده اند.

تنظیم ژئودزیک تعیین می کند که چگونه بخش های خط بین رئوس متوالی چند خط/چند ضلعی رسم می شوند. بخش‌های ژئودزیکی آن‌هایی هستند که کوتاه‌ترین مسیر را در امتداد سطح زمین (یک کره) دنبال می‌کنند و اغلب به صورت خطوط منحنی بر روی نقشه با طرح مرکاتور ظاهر می‌شوند. بخش های غیر ژئودزیکی به صورت خطوط مستقیم روی نقشه ترسیم می شوند.

این ویژگی را روی شی گزینه شکل با فراخوانی *Options.geodesic() تنظیم کنید، جایی که true نشان می دهد که بخش ها باید به عنوان geodesic رسم شوند و false نشان می دهد که بخش ها باید به عنوان خطوط مستقیم رسم شوند. اگر مشخص نشده باشد، پیش‌فرض بخش‌های غیرژئودزیکی ( false ) است.

پس از اضافه شدن شکل به نقشه، تنظیمات geodesic را می توان با فراخوانی isGeodesic() و با فراخوانی setGeodesic() تغییر داد.

شاخص Z

شاخص z ترتیب پشته این شکل را نسبت به دیگر پوشش‌ها (شکل‌های دیگر، روکش‌های زمین و روکش‌های کاشی) روی نقشه مشخص می‌کند. یک روکش با شاخص z بالا در بالای همپوشانی با شاخص های z پایین ترسیم می شود. دو همپوشانی با شاخص z یکسان به ترتیب دلخواه رسم می شوند.

توجه داشته باشید که بدون در نظر گرفتن شاخص z سایر پوشش‌ها، نشانگرها همیشه بالای سایر پوشش‌ها کشیده می‌شوند.

با فراخوانی *Options.zIndex() این ویژگی را روی شی گزینه های شکل تنظیم کنید. اگر مشخص نشده باشد، z-index پیش فرض 0 است. پس از اضافه شدن شکل به نقشه، z-index را می توان با فراخوانی getZIndex() و با فراخوانی setZIndex() تغییر داد.

دید

نمایان بودن مشخص می کند که آیا شکل باید روی نقشه ترسیم شود، جایی که true نشان می دهد که باید ترسیم شود و false نشان می دهد که نباید ترسیم شود. این به شما امکان می دهد تا به طور موقت یک شکل را روی نقشه نمایش ندهید. برای حذف دائم شکل از نقشه، remove() را روی آن شکل فراخوانی کنید.

با فراخوانی *Options.visible() این ویژگی را روی شی گزینه های شکل تنظیم کنید. اگر مشخص نشده باشد، نمای پیش‌فرض true است. پس از اینکه شکل به نقشه اضافه شد، می‌توان با فراخوانی ()isVisible به دید دسترسی پیدا کرد و با فراخوانی isVisible() setVisible() تغییر است.

داده ها را با یک شکل مرتبط کنید

می توانید یک شی داده دلخواه را با چند خط، چند ضلعی یا دایره با استفاده از setTag() شکل ذخیره کنید و با استفاده از getTag() () آن را بازیابی کنید. به عنوان مثال، Polyline.setTag() را برای ذخیره یک شی داده با یک polyline، و Polyline.getTag() را برای بازیابی شی داده فراخوانی کنید.

کد زیر یک تگ دلخواه ( A ) را برای چند خط مشخص شده تعریف می کند:

جاوا


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");

      

کاتلین


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 برای شکل نشان دهند.