Android MapMarker.setCoordinate()停止更新位置

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

对于自定义位置指示器,我使用Here SDK提供的MapMarker。位置由信标获得。在某个时刻,我仍然通过信标接收到地理坐标形式的新位置数据,但地图标记的定位停止了,因为它停留在某个位置。一段时间后,比如说100米,它更新了位置,但随后又被卡住了。我的实现中是否遗漏了什么

  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添加新的地理位置。我把代码改成了。等于。没有效果。标记器仍保持在原来的位置。