问题描述
我正在尝试使用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)
)
)
}
但是我的Linestring与从服务器接收到的Linestring数据不完全匹配,这可能是由于矢量图块的概括,因为我们收到了
结果不是我期望的,我希望红线与绿色完全匹配。我不知道为什么线条不合适。
有没有办法做到这一点?它似乎与“选择建筑物”示例(https://docs.mapbox.com/android/maps/examples/select-a-building/)类似,但是要突出显示的功能不是由用户选择驱动的,而是来自加载地图视图时来自服务器的已知功能数据