#android #kotlin #mapbox #mapbox-android #mapbox-android-maps
#Android #kotlin #mapbox #mapbox-android #mapbox-android-карты
Вопрос:
Я пытаюсь выделить объект на карте с помощью Mapbox Android SDK. Сначала карта загружается в приложение с использованием пользовательских стилей с сервера векторных плиток.
Чтобы выделить объект, данные поступают с сервера с координатами и данными объекта, хранящимися в базе данных. Приложение Android получает GeoJSON следующим образом:
{
…
"geometry":{
[enter image description here][1]"type":"LineString",
"coordinates":[
[-6.280378997325897,36.52107960787673],[-6.280381679534912,36.52104619723205],
[-6.280373632907867,36.52102787525949]
]
},
"mapboxId":487
…
}
Я использую тип геометрии, чтобы узнать тип объекта, а затем создать объект того же типа из самой геометрии.
when (current.getGeometryType()) {
POINT -> …
LINE_STRING -> marker.geometry = LineString.fromJson(current.getGeometry())
…
}
Затем я добавляю источник и слой с некоторыми свойствами.
style.apply {
addSource(
GeoJsonSource(
SOURCE_ID3_RED_BORDER,
FeatureCollection.fromFeatures(marker)
)
)
addLayer(
LineLayer(
LAYER_ID3_RED_BORDER,
SOURCE_ID3_RED_BORDER
)
.withProperties(
PropertyFactory.lineGapWidth(5f),
PropertyFactory.lineJoin(Property.LINE_JOIN_ROUND),
PropertyFactory.lineCap(Property.LINE_CAP_ROUND),
PropertyFactory.lineWidth(2f),
PropertyFactory.lineColor(Color.RED)
)
)
}
Но моя строка строк не совсем соответствует данным строки строк, полученным с сервера, вероятно, из-за обобщения векторных плиток, поскольку мы получаем
Результат не такой, как я ожидал, я бы хотел, чтобы красная линия точно совпадала с зеленой. Я не знаю, почему строки не подходят.
Есть ли способ добиться этого? Похоже, это похоже на пример «Выбрать здание» (https://docs.mapbox.com/android/maps/examples/select-a-building /) но объект, который должен быть выделен, определяется не выбором пользователя, а известными данными объекта, поступающими с сервера при загрузке вида карты.
Ответ №1:
Для некоторых его частей, таких как кривая, у вас недостаточно координат для представления кривой. Для прямых частей, похоже, возникает та же проблема. Когда вы смотрите на часть под желтой областью, красные линии идеально совпадают с зелеными.
В этой части у вас достаточно координат. В остальных случаях вы этого не делаете.