【发布时间】:2015-01-08 10:03:26
【问题描述】:
我正在使用适用于 Android 的 Mapsforge 0.5。我在地图上添加了一些标记:
map.getLayerManager().getLayers().add(layer);
我想要做的是改变现有图层的位置。我有一个对存储对象的引用,但没有任何方法可以移动标记。该位置只有一个吸气剂
layer.getPosition() : LatLong
LatLong 的纬度和经度字段是最终的 :( 我已经通过首先删除图层然后再次添加它来解决问题,但这会导致一些额外的协调逻辑。有什么方法可以实际移动图层(标记)?
【问题讨论】:
-
抽象类Layer定义getPosition()方法返回null。 github.com/mapsforge/mapsforge/blob/master/mapsforge-map/src/… 任何像 TileLayer 这样的扩展类都不会修改它。
-
好的,
Marker类扩展自Layer并修改了getPosition()私有字段Marker.this.latLong的值甚至不是最终的。它接受通过Marker.setLatLong()github.com/mapsforge/mapsforge/blob/master/mapsforge-map/src/… 对Marker.this.latLong的更改 -
@eee 谢谢,我只需要投射到 Marker 才能移动位置......现在我理解了 API 背后的逻辑 - 有道理,因为 TileLayer 并没有真正的位置,但所有叠加层(如标记、圆圈等)都应有一个位置。请添加一个简单的答案,例如“投射到标记或其他类”,以便我可以接受它;)