我正在开发一个寻宝游戏,引导用户完成一条路线。我遇到问题了 在 map 中显示我当前的位置,其中还显示任务点
我扩展了 ItemizedOverlay
public class QuestItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private ArrayList<OverlayItem> mOverlays= new ArrayList<OverlayItem>();
public QuestItemizedOverlay(Drawable defaultmarker) {
super(boundCenterBottom(defaultmarker));
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
public void removeItem(int index) {
mOverlays.remove(index);
populate();
}
@Override
public int size() {
return mOverlays.size();
}
}
当我的位置改变时,我得到了监听器:
private final LocationListener locationlistener= new LocationListener() {
public void onLocationChanged(Location location) {
Log.i("LOCATION_UPDATED","");
updateWithNewLocation(location);
mapview.invalidate();
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) { }
public void onStatusChanged(String provider, int sttus, Bundle extras) { }
};
updatewithNewlocation方法有以下代码:
private void updateWithNewLocation(Location location) {
Double curlat=location.getLatitude();
Double curlong=location.getLongitude();
GeoPoint point=new GeoPoint((int)(curlong*1E6),(int) (curlat*1E6));
OverlayItem overlayitem=new OverlayItem(point,"I'm here","This is where you are");
Drawable marker=this.getResources().getDrawable(R.drawable.eplogo_marker);
overlayitem.setMarker(marker);
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.clear();
mapOverlays.add(itemizedoverlay);
}
使用 DDMS 进行调试(只是测试),监听器工作正常,并且当我使用 DDMS 更改位置时,我的 Mapview mOverlays 会增长,但是当我调用 mapview.invalidate() 时什么也没有发生
刷新 map View 的方式是什么?
还有一个问题,如果一个 mapOverlay 具有多个 itemizedoverlay,每个 itemizedoverlay 都带有一些标记,会发生什么情况?
提前致谢
最佳答案
@pekechis:更新mapOverLays(添加新的等)后只需调用
mapView.postInvalidate();
这将刷新 map View 。 您的问题也可能是由于未在 UI 线程内调用此引起的,例如像这样
mActivity.runOnUiThread(new Runnable() {
public void run() {
mapView.postInvalidate();
}
});
关于Android向MapView添加新点(不刷新),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5715372/