2

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

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

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

layer.getPosition() : LatLong

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

4

1 回答 1

3

Mapsforge 将层视为渲染层、平铺层、地图叠加层(如标记)等。

默认情况下,抽象类Layer定义了getPosition()返回 null 的方法。

从它扩展的一些类TileLayer不会修改方法的行为。但是,一些 Layer 的扩展类确实修改了它。

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

如果 Layer 对象确实是 的实例Marker,则可以将该对象强制转换为Marker

于 2015-01-08T01:50:50.337 回答