将OSMDroid与片段集成
问题描述:
所以我设法通过扩展Activity来更好地理解OSMDRoid的工作原理。将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
}
}
然而,我难以找到实施例使用利用OSMDRoid Maptiles片段实现(例如,SherlockMapFragment)来显示。有谁知道如何实现这一点,还是能够提供一个示例实施指南让我遵循?
我需要这样做,因为我有一个活动容器,当我点击某个按钮时,我想要做一个片段.replace()来代替容器与OSMDRoid地图片段。
谢谢!
答
无论您在活动或片段中使用它,osmdroid映射视图的工作原理都是一样的。只需将它放在布局文件中,然后将其充入碎片中,或直接在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;
}
答
在片段是这样的(改变的RelativeLayout到您的布局类型)创建onCreateView方法:
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;
}
不幸的是这对我来说并不像你显示什么那么简单......如果你能看到我的代码“的setContentView(R.layout.offline_map_activity); myOpenMapView =(MapView类)findViewById(R.id。打开MapView类);”我需要这样做。我怎么做碎片? – lyk 2013-02-20 14:49:24