MapMarker.setCoordinate()停止更新位置
对于自定义Positionindicator,我使用Here SDK给出的MapMarker。该位置由Beacons获得。在某些时候,我仍然通过信标收到GeoCoordinates形式的新位置数据,但MapMarker的定位停在位置上。过了一会儿,让我们说100米,它更新了位置,但之后再次卡住。我在执行中错过了什么吗?MapMarker.setCoordinate()停止更新位置
if (mPositionIndicator.getCoordinate() != geoCoordinate)
mPositionIndicator.setCoordinate(geoCoordinate);
地理坐标每秒更新一次或更少。
我可以看到新的位置......但是MapMarker停留在旧的位置。
的geoCoordinate
我传递给地图标记看起来是这样的:new GeoCoordinate(52.xxxxxx , 13.xxxxxx)
我试图更新removeMapObject和addMapObject的位置,但仍当一个新的位置传递不更新。
更新: 更多信息。我使用其他框架从信标中获取位置数据,并将这些数据设置为地图标记。
为了给MapMarker
设置新位置,您不必再次致电addMapObject()
。设置新的位置就足够了。例如下面的代码将创建一个MapMarker
其不断上升北方各100毫秒:
new Thread() {
public void run() {
try {
while(true) {
if (m_marker == null) {
m_latitude = 52.5;
Image image = new Image();
image.setBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.image));
m_marker = new MapMarker(new GeoCoordinate(m_latitude, 13.4), image);
m_hereMap.addMapObject(m_marker);
}
// move marker north
m_marker.setCoordinate(new GeoCoordinate(m_latitude += 0.00001, 13.4));
sleep(100);
}
} catch (InterruptedException e) {}
}
}.start();
所以我建议来隔离问题。如果您使用信标接收更新的室内位置或HERE的PositioningManager
,应该无关紧要。
此外,在您的实现中,比较GeoCoordinate
实例看起来有点可疑,而不是比较纬度或经度的不同。最好使用geoCoordinate1.equals(geoCoordinate2)
。
其实不要调用'map.addMapObject(marker)',我所做的就是添加新的GeoLocation与marker.setCoordinate。我将我的代码更改为使用.equals。没有效果。标记仍然停留在旧的位置。 – elpatricko
这个问题仍然存在。我如何实现像地图标记一样的位置指示器? – elpatricko