Android MapMarker.setCoordinate()停止更新位置
对于自定义位置指示器,我使用Here SDK提供的MapMarker。位置由信标获得。在某个时刻,我仍然通过信标接收到地理坐标形式的新位置数据,但地图标记的定位停止了,因为它停留在某个位置。一段时间后,比如说100米,它更新了位置,但随后又被卡住了。我的实现中是否遗漏了什么Android MapMarker.setCoordinate()停止更新位置,android,geolocation,here-api,indoor-positioning-system,Android,Geolocation,Here Api,Indoor Positioning System,对于自定义位置指示器,我使用Here SDK提供的MapMarker。位置由信标获得。在某个时刻,我仍然通过信标接收到地理坐标形式的新位置数据,但地图标记的定位停止了,因为它停留在某个位置。一段时间后,比如说100米,它更新了位置,但随后又被卡住了。我的实现中是否遗漏了什么 if (mPositionIndicator.getCoordinate() != geoCoordinate) mPositionIndicator.setCoordinate(geoCoordinat
if (mPositionIndicator.getCoordinate() != geoCoordinate)
mPositionIndicator.setCoordinate(geoCoordinate);
地理坐标每秒钟或更短时间更新一次
我可以看到新的位置。。。但地图标记仍保留在某些旧位置
传递给地图标记的地理坐标
如下所示:新地理坐标(52.xxxxxx,13.xxxxxx)
我试图用removeMapObject和addMapObject更新位置,但当传递新位置时,它仍然不更新
更新:
再多一点信息。我使用其他一些框架从信标获取locationdata,并将该数据设置为mapmarker 要将新位置设置为
MapMarker
,无需再次调用addMapObject()
。设置新位置就足够了。例如,以下代码将创建一个MapMarker
,该标记每100ms向上移动一次:
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();
因此,我建议将问题孤立起来。无论您是使用信标接收更新的室内位置还是这里的PositioningManager
,这都不重要
此外,在您的实现中,比较
geocordination
实例而不是比较纬度或经度是否不同似乎有点可疑。最好使用地理坐标1.equals(地理坐标2)
这个问题仍然存在。如何实现像使用地图标记的位置指示器这样的行为?实际上不要调用“map.addMapObject(marker)”,我所做的只是使用marker.setCoordinate添加新的地理位置。我把代码改成了。等于。没有效果。标记器仍保持在原来的位置。