8

約 10 棟の建物で構成される正方形エリアのインタラクティブ マップを作成するアプリケーションのセクションが必要です。建物をクリックして、それに関する情報を受け取ることができなければなりません。これにはいくつかの方法があることは知っていますが、これについてある程度のバックグラウンドを持っている人が私にいくつかのヒントを教えてくれることを願っています.

これを達成するために私が考えることができるいくつかの方法があります。

グーグルマップ

私はすでに Google Maps API を実装しており、非常にうまく機能しますが、探していた効果は実際にはありません。Google マップにはインターネット接続が必要で、マップ全体にアクセスできます。1 つの領域にロックする必要があります。

ウェブビュー

これは素晴らしい代替手段のようです。特定の建物をクリックすると、より多くの情報が得られる簡単なイメージ マップを作成できると確信しています。これに関する唯一の問題は、インターネット接続も必要であることです。

OpenGL?

これについてあまり詳しく調べたことはありませんが、実装が難しくて面倒だと聞きました。ローカルで実行できますが、それだけの価値はありますか?

インタラクティブ マップを開発する他の方法はありますか? 心に留めておくべきことは、いつかこれをiOSに移植したいということです(もし誰かがそれを経験したことがあれば)

4

4 に答える 4

7

フルコントロールが必要で、htmlとjavascriptの使用に慣れている場合は、オープンソースのOpenLayersライブラリを使用することを強くお勧めします。HTMLページを作成し、アセットに保存して、デバイス上でローカルに実行できます。独自のマップタイルのセットを作成することも、単一のjpegファイルを使用して、必要な建物を「マップ」し、シンプルでありながら広範なOpenLayers APIを使用して、建物の選択と情報の表示を可能にすることもできます。パンやズーム用のマルチタッチ機能も組み込まれています。モバイルの内外でうまく機能します。

ここで例のリストを見ることができます。いずれかの例で単純なビューソースを実行すると、それらが何をしているかについて非常に明確なアイデアが得られます。また、クリックして詳細を表示できるフリッカーからマップ領域に多数の画像サムネイルをプロットするこの例を見ることができます。この例ではオンラインフィードを使用していますが、ローカルフィードを簡単に使用できます。アプリからWebビューに渡されたフィードも使用できます。

ps。私はOpenLayersをプロジェクトに積極的に使用する以外に、OpenLayersとは提携していません。

于 2012-08-08T17:13:51.463 に答える
5

最初からあなたの質問に答えるのに 10 ページかかるかもしれません。

  1. 最初にここを見てみましょう: https://developers.google.com/maps/documentation/android/hello-mapview

  2. MapView を使用できるようになったら、あとは ItemizedOverlay クラスを作成するだけです。

チュートリアルで、このクラスを HelloItemizedOverlay に置き換えます。

public class GooglerMapItemizedOverlay extends ItemizedOverlay {

    private ArrayList<OverlayItem> mOverlayItems = new ArrayList<OverlayItem>();
    private Context mContext;
    private Paint rectPaint, textPaint;

    public GooglerMapItemizedOverlay(Drawable defaultMarker, Context context) {
        super(boundCenterBottom(defaultMarker));

        mContext = context;
        populate(); 
    }

    @Override
    protected OverlayItem createItem(int i) {
        return mOverlayItems.get(i);
    }

    public void addOverlayItem(OverlayItem overlay) {
        mOverlayItems.add(overlay);
        populate();
    }

    @Override
    public int size() {
        return mOverlayItems.size();
    }

    public void clear(){
        mOverlayItems.clear();
        populate(); 
    }

    @Override
    protected boolean onTap(int index) {
        // information goes here
      OverlayItem item = mOverlayItems.get(index);
      AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
      dialog.setTitle(item.getTitle());
      dialog.setMessage(item.getSnippet());
      dialog.show();
      return true;
    }
}

お役に立てれば。

于 2012-08-04T20:15:51.300 に答える
2

グーグルマップ

  • 必要な効果が得られます (カスタムの場所、移動できない、ズームインまたはズームアウトできない)
  • ただし、オフライン コンテンツは許可されません

これを行う方法は次のとおりです(私はそれを実行しましたが、動作します):

  1. エリアを限定したいGPS座標を中心に
  2. ズームレベルを調整して領域を制限します
  3. ズームインまたはズームアウトを防ぐために、マルチタッチ イベントを無効にします。
  4. 移動を防ぐためにドラッグを無効にします
  5. ItimizedOverlaysアクションを処理するために作成した のクリックを処理します

これらのステップのそれぞれについて、StackOverflow に適切な回答があります。

于 2012-08-07T09:25:39.353 に答える
0

常に同じマップを表示する必要がある場合は、マップをレイアウトの背景として表示し (マップ イメージを作成)、タッチ位置を処理して特定の建物のポップアップを表示することができます。

または、コメントに記載されているように webview を使用し、タッチ x、y を処理して建物の位置をマッピングします。

于 2012-08-02T09:01:34.087 に答える