【发布时间】:2017-08-02 06:53:29
【问题描述】:
我目前正在使用 osmdroid 显示当前位置。
基于以下example,我尝试通过在每次更改我的位置时不构造ItemizedOverlay<OverlayItem> 和ArrayList<OverlayItem> 来稍微优化系统,而是在构造函数中只构造一次,然后再简单地构造它们向我的 ArrayList 变量添加点。
现在是这样的:
private void InitializeMarkersOverlay() {
mOverlayItemArrayList = new ArrayList<OverlayItem>();
ItemizedOverlay<OverlayItem> locationOverlay =
new ItemizedIconOverlay<OverlayItem>(this, mOverlayItemArrayList, null);
mMapView.getOverlays().add(locationOverlay);
}
当新位置到达时:
private void AddPointToOverlay(GeoPoint gPt, boolean bShouldClearList) {
OverlayItem overlayItem = new OverlayItem("", "", gPt);
Drawable markerDrawable = ContextCompat.getDrawable(this, R.drawable.pin);
overlayItem.setMarker(markerDrawable);
// first time initializer
if(bShouldClearList) {
mOverlayItemArrayList.clear();
}
mOverlayItemArrayList.add(overlayItem);
}
由于我的mMapView 已经有一个指向mOverlayItemArrayList 的指针,我希望我的mapview 图层会自动收到有关更改的通知。但实际上什么也没发生。只有通过重新创建对象,我才能看到图钉。
【问题讨论】:
标签: java android dictionary openstreetmap osmdroid