所以我设法通过扩展Activity来更好地了解OSMDRoid的工作原理。
public class POfflineMapView extends Activity implements LocationListener, MapViewConstants{
private MapView myOpenMapView;
private OsmMapsItemizedOverlay mItemizedOverlay;
private ResourceProxy mResourceProxy;
private OverlayItem overlayItem;
private ArrayList<OverlayItem> mItems = new ArrayList<OverlayItem>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mResourceProxy = new DefaultResourceProxyImpl(getApplicationContext());
setContentView(R.layout.offline_map_activity);
myOpenMapView = (MapView) findViewById(R.id.openmapview);
myOpenMapView.getTileProvider().clearTileCache();
//.... code continues
}
}
但是,我很难找到使用Fragments实现使用OSMDRoid Maptiles显示的示例(例如,SherlockMapFragment)。有谁知道如何实现这一点,或者能够为我提供示例实施指南?
我需要这样做,因为我有一个Activity容器,当我点击某个按钮时,我想做一个片段.replace()来代替用OSMDRoid地图片段代替容器。
谢谢!
答案 0 :(得分:1)
无论您是在Activity还是Fragment中使用它,osmdroid地图视图都是一样的。只需将它放在您的布局文件中并在Fragment中膨胀它,或者直接在Fragment的onCreateView
方法中创建MapView。
要创建包含默认地图的片段,您可以执行以下操作:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return new MapView(getActivity(), 256);
}
在你的片段类中。
如果您想使用包含MapView的布局,您可以在片段中执行以下操作:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.offline_map_activity, null);
myOpenMapView = v.findViewById(R.id.openmapview);
return v;
}
答案 1 :(得分:1)
在Fragment中像这样创建 onCreateView 方法(将RelativeLayout更改为您的布局类型):
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
RelativeLayout rl = (RelativeLayout) inflater.inflate(offline_map_activity, container, false);
myOpenMapView = (MapView) rl.findViewById(R.id.openmapview);
//.... code continues
return rl;
}