2017-06-16 91 views
2

對於自定義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的位置,但仍當一個新的位置傳遞不更新。

更新: 更多信息。我使用其他框架從信標中獲取位置數據,並將這些數據設置爲地圖標記。

+0

這個問題仍然存在。我如何實現像地圖標記一樣的位置指示器? – elpatricko

回答

3

爲了給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)

+0

其實不要調用'map.addMapObject(marker)',我所做的就是添加新的GeoLocation與marker.setCoordinate。我將我的代碼更改爲使用.equals。沒有效果。標記仍然停留在舊的位置。 – elpatricko

相關問題