我正在使用Mapsforge 0.5 for android。我在地图中添加了一些标记:
map.getLayerManager().getLayers().add(layer);
我要做的是改变现有图层的位置。我有一个存储对象的引用,但没有任何方法可以移动标记。
只有一个吸气剂
layer.getPosition() : LatLong
LatLong的纬度和经度字段是最终的:(我已经通过首先删除图层然后再添加它来解决了这个问题,但这导致了一些额外的协调逻辑。是否有某种方法我可以实际移动图层(标记) )?
1 个答案:
答案 0 :(得分:3)
Mapsforge将图层视为渲染图层,图块图层,标记等地图叠加层等。
默认情况下,抽象类Layer定义返回null的getPosition()
方法。
从TileLayer
扩展的某些类不会修改方法的行为。但是,一些Layer的扩展类会修改它。
在您的情况下,地图覆盖类型,Marker类使用修改后的Layer
方法从getPosition()
扩展。私有字段Marker.this.latLong
的值甚至不是最终的。它接受通过Marker.this.latLong
方法更改为Marker.setLatLong()
。
如果Layer对象实际上是Marker
的实例,则可以将对象强制转换为Marker
。