如何在Android中移动Mapsforge图层(标记)

时间:2015-01-07 09:53:35

标签: android mapsforge

我正在使用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