我的代码中有一些路线,用户可以选择他们想在地图上看到的路线。例如,有路线 X 和路线 Y。然后用户正在查看路线 Y,然后点击按钮以查看路线 X。路线 Y 被隐藏,路线 X 被显示。
现在这是我显示路线 X 的代码(与路线 Y 相同,除了不同的属性)
FeatureCollection featureCollection = BaseFeatureCollection.FromJson
("{\"type\":\"FeatureCollection\",\"features\":" +
"[{\"type\":\"Feature\",\"geometry\":{\"type\":\"LineString\"" +
",\"coordinates\":[" + stringCoordinates + "]},\"properties\":{}}]}");
GeoJsonSource geoJsonSource = new GeoJsonSource("route", featureCollection);
_mapboxMap.AddSource(geoJsonSource);
_lineLayerX = new LineLayer("linelayerred", "route");
_lineLayerX.SetProperties(
PropertyFactory.LineWidth(new Java.Lang.Float(8.0f)),
PropertyFactory.LinePattern("routex")
);
if (isShowRouteX) {
_mapboxMap.AddLayer(_lineLayerX);
}
然后当我不想隐藏并显示另一条路线时
_mapboxMap.RemoveLayer(_lineLayerX);
_mapboxMap.AddLayer(_lineLayerY);
代码简化了,但基本上这就是我所做的一切,它确实显示了路线。
现在,我第一次添加LineLayer
时,它会立即显示在地图上,我不需要放大或缩小。但是如果LineLayer
添加了新的(在删除旧的之后),除非放大或缩小地图,否则不会出现更改,好像我必须这样做才能触发重绘。甚至将地图平移到任何方向都不会出现新线。RemoveLayer
虽然执行完美。
我什至试过了_mapView.Invalidate()
,还是不行。我应该添加什么以便用户不需要放大/缩小来查看新的LayerLine
?
另外,我知道PropertyFactory
它Visibility
应该/可能更好地解决我的问题,但它不起作用,尤其是Property.None
. 并且不确定它是否仍然是这个问题的主题,所以我不会进一步讨论。