Рисование стрелки на карте в MapKit
Нужно нарисовать стрелку по направлению движения, и первая проблема с которой я столкнулся и не могу найти ответ, это нарисовать хоть какую-то стрелку, пробовал рисовать отдельные линии, и давать им вставлять на карту Bitmap конца стрелки, но решил что это не правильно решение и начал копать нашел какой-то странный метод которые должен рисовать линию и у него есть функция addArrow, но он вообще ничего не выводит,
код что пробовал
fun MapObjectCollection.createArrowPolyLine1(
context: Context,
points: List<Point>,
strokeWidth: Float = 2f,
outlineWidth: Float = 8f,
color: Int = R.color.white_dark,
outlineColor: Int = R.color.blue
) =
this.addColoredPolyline(Polyline(points)).also {
it.addArrow(
PolylinePosition(0, 0.9),
200f,
color
)
it.zIndex = 2f
it.strokeWidth = strokeWidth
it.outlineColor = context.color(outlineColor)
it.outlineWidth = outlineWidth
}
Ответы (1 шт):
Поскольку я только спустя две недели нашел решение данной проблемы, оставлю свое решение здесь, пусть следующий кто будет этим заниматься, не будет тратить на это столько времени
fun MapObjectCollection.createArrowPolyLine(
context: Context,
points: List<Point>,
strokeWidth: Float = 5f,
outlineColor: Int = R.color.blue_white,
outlineWidth: Float = 0f,
outlineColorArrow: Int = R.color.orange,
color: Int = R.color.blue_white,
zIndex: Float = 30f
) = this.addColoredPolyline(Polyline(points)).also {
(0 until points.size - 1).forEach{ segment ->
if (segment % 6 == 0){
it.addArrow(
PolylinePosition(segment, 0.1),
30f,
context.color(outlineColorArrow)
)
}
}
it.arrows().forEach { arrow ->
arrow.outlineWidth = 0f
arrow.outlineColor = context.color(outlineColorArrow)
arrow.triangleHeight = 10f
}
it.outlineColor = outlineColor
it.outlineWidth = outlineWidth
it.strokeWidth = strokeWidth
it.setPaletteColor(0,context.color(color))
it.setColors(List(points.size - 1){0})
it.zIndex = zIndex
}
смысл прост, создает через setPaletteColor цвет и к нему индекс и через setColors лист равный по длине количеству сегментов(прямая от точки до точки). состоящий из индекса цвете в который надо окрасить эту прямую - это что касается прямой на которой будут рисоваться стрелки, а для самой стрелки через метод addArrow передаем сегмент в котором хотим ее нарисовать, точку на сегменте где нарисовать (от 0 до 1), длину и цвет, остальное думаю разберетесь сами)
