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

How to move a Mapsforge Layer (Marker) in Android

我正在为 android 使用 Mapsforge 0.5。我在地图上添加了一些标记:

map.getLayerManager().getLayers().add(layer);

我想做的是更改现有图层的位置。我有一个对存储对象的引用,但没有任何方法可以移动标记。该位置只有一个吸气剂

layer.getPosition() : LatLong

LatLong 的纬度和经度字段是最终的:( 我已经通过先删除图层然后再次添加来解决问题,但这会导致一些额外的协调逻辑。有什么方法可以实际移动图层(标记)?

Mapsforge 将层视为渲染层、图块层、地图覆盖层(如标记)等。

摘要 class Layer 默认将 getPosition() 方法定义为 return null。

一些class是从它扩展而来的,比如TileLayer不会修改方法的行为。但是,某些图层的扩展 classes 确实会对其进行修改。

在您的情况下,地图覆盖类型 Marker class 从 Layer 扩展而来,并使用修改后的 getPosition() 方法。私有字段 Marker.this.latLong 的值甚至不是最终值。它通过 Marker.setLatLong() 方法接受对 Marker.this.latLong 的更改。

前提是Layer对象真的是Marker的一个实例,你可以将对象转换为Marker