【问题标题】:Integrating OSMDroid with Fragments将 OSMDroid 与片段集成
【发布时间】:2013-02-15 14:44:56
【问题描述】:

所以我设法更好地理解 OSMDRoid 是如何工作的……通过扩展 Activity。

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
    }
}

但是,我很难找到使用片段实现(例如,SherlockMapFragment)的 OSMDRoid Maptiles 显示的示例。有谁知道如何实现这一点,或者能够提供一个示例实现指南供我参考?

我需要这样做,因为我有一个 Activity 容器,当我单击某个按钮时,我想做一个片段 .replace() 来用 OSMDRoid 映射片段替换容器,而不是可能。

谢谢!

【问题讨论】:

    标签: android android-fragments osmdroid


    【解决方案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;
    }
    

    【讨论】:

    • 对我来说不幸的是,它并不像您所展示的那么容易...如果您可以看到我的代码“setContentView(R.layout.offline_map_activity); myOpenMapView = (MapView) findViewById(R.id .openmapview);"我需要这样做。分片怎么做?
    【解决方案2】:

    像这样在 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-14
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多