در حال بارگذاری

پرش به مطلب اصلی

رسم خط

در این بخش، هدف رسم یک خط (Polyline) بر روی نقشه با استفاده از مجموعه‌ای از نقاط جغرافیایی است.

رسم خط ساده

برای رسم خط، ابتدا یک PolylineOptions ساخته و نقاط تشکیل‌دهنده‌ی خط را با متد add به آن اضافه می‌کنیم؛ سپس با فراخوانی addPolyline روی نقشه، خط رسم می‌شود:

mapView.getMapAsync { map ->
map.setStyle(Style.Builder().fromUri("https://static.neshan.org/sdk/maplibre/styles/light.json"))
drawLine(map)
}

private fun drawLine(map: MapLibreMap): Polyline {
val options = PolylineOptions()
.add(LatLng(35.769368, 51.327650))
.add(LatLng(35.756670, 51.323889))
.add(LatLng(35.746670, 51.383889))
.color(Color.parseColor("#2277BD"))
.width(4f)

val polyline = map.addPolyline(options)

// متمرکز کردن دوربین روی نقطه‌ی ابتدای خط
map.cameraPosition = CameraPosition.Builder()
.target(LatLng(35.769368, 51.327650))
.zoom(14.0)
.build()

return polyline
}
نکته

متد add هم یک نقطه‌ی تکی (LatLng) و هم چندین نقطه به صورت آرایه (add(LatLng...)) می‌پذیرد، بنابراین می‌توانید به جای چندین بار فراخوانی add، همه‌ی نقاط را یکجا هم ارسال کنید.

شفافیت خط

با متد alpha می‌توانید میزان شفافیت خط را بین 0 (کاملاً شفاف) تا 1 (کاملاً مات) تنظیم کنید:

val options = PolylineOptions()
.add(latLng1, latLng2, latLng3)
.color(Color.parseColor("#2277BD"))
.width(4f)
.alpha(0.7f)

حذف خط

با استفاده از شیء Polyline ساخته شده و متد removePolyline، خط رسم‌شده از روی نقشه حذف می‌شود:

map.removePolyline(polyline)

افزودن چندین خط به صورت یکجا

مشابه مارکرها، برای افزودن همزمان چند خط بهتر است از متد addPolylines استفاده کنید:

val allOptions = listOf(
PolylineOptions().add(latLng1, latLng2).color(Color.RED),
PolylineOptions().add(latLng3, latLng4).color(Color.BLUE),
)
val polylines = map.addPolylines(allOptions)

سایر کارهای معمول (Routine)

  • رسم چندضلعی (Polygon): دقیقاً مشابه خط است، با استفاده از PolygonOptions (متدهای add، fillColor، strokeColor، alpha) و map.addPolygon(...) / map.removePolygon(...).
  • جابه‌جایی و زوم دوربین: با تنظیم map.cameraPosition (یا map.setCameraPosition(...) در جاوا) به یک CameraPosition.Builder جدید که target، zoom، bearing و tilt دلخواه را دارد.
  • دریافت موقعیت فعلی دوربین: با متد map.cameraPosition (getter).
  • پاک کردن همه‌ی annotation ها: با فراخوانی map.clear() تمام مارکرها، خطوط و چندضلعی‌های افزوده‌شده به نقشه حذف می‌شوند.

برای مطالعه‌ی نحوه‌ی افزودن مارکر، صفحه‌ی افزودن نشانه‌گر را ببینید.