4

そのため、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 実装 (SherlockMapFragment など) を使用して OSMDRoid Maptiles を使用して表示する例を見つけるのに苦労しています。誰かがこれを実装する方法を知っていますか、または私が従うためのサンプル実装ガイドを提供できますか?

アクティビティ コンテナーがあるため、これを行う必要があります。特定のボタンをクリックすると、可能であれば、フラグメント .replace() を実行してコンテナーを OSMDRoid マップ フラグメントに置き換えます。

ありがとう!

4

2 に答える 2

1

osmdroid マップ ビューは、Activity または Fragment のどちらで使用しても同じように機能します。レイアウト ファイルに配置して Fragment でインフレートするか、Fragment のメソッドで直接 MapView を作成しonCreateViewます。

デフォルトのマップを含むフラグメントを作成するには、次のようにします。

@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;
}
于 2013-02-15T16:09:04.107 に答える
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;
}
于 2013-06-10T08:39:50.260 に答える