2

私は Google Maps v2 API を使用しており、地図上にマーカーを配置しています。マーカーはさまざまなものを表しているため、マーカーのクラスごとにカスタム InfoWindow レイアウトが必要です。問題は、マーカーが選択されるたびに呼び出される とをオーバーライドするgetInfoContentsと、各マーカーに同じレイアウトが提供されることです。getInfoWindow

マーカーのグループごとに異なるレイアウトを膨らませることができるように、これを行う別の方法はありますか?

4

3 に答える 3

4

問題は、マーカーが選択されるたびに呼び出される getInfoContents と getInfoWindow をオーバーライドすると、各マーカーに同じレイアウトが提供されることです。

彼らは確かにそうする必要はありません。がパラメータとして各メソッドに渡さMarkerれるため、 の情報に基づいてさまざまなことを行うことができますMarker

于 2013-03-05T17:59:49.960 に答える
1

でも君ならできる。マーカーを膨らませる前にチェックを行い、チェックにInfoWindow基づいて別のレイアウトを膨らませます。

Markerメソッドで を受け取っpublic View getInfoContents(Marker args)たら、このマーカーが必要なタイプに対応しているかどうかをテストする if ステートメントを作成し、これに基づいて関連するレイアウトを膨らませます。

たとえば、実行してマーカーの位置座標を確認できます

clickMarkerLatLng = args.getPosition();

これに基づいて、何InfoWindowを提示すべきかを決定します。

于 2013-03-05T18:02:52.343 に答える
1

とてもシンプルな map.setInfoWindowAdapter(new InfoWindowAdapter() {

            @Override
            public View getInfoWindow(Marker marker) {
                // TODO Auto-generated method stub
                View v;
                LayoutInflater inflator=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
                v=inflator.inflate(R.layout.info_inflator, null);
                TextView text=(TextView)v.findViewById(R.id.title);
                Button ok_button=(Button) v.findViewById(R.id.ok_button);
                text.setText(marker.getTitle());
                ok_button.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub

                    }
                });

                return v;
            }

            @Override
            public View getInfoContents(Marker marker) {
                // TODO Auto-generated method stub
                return null;
            }
        });
于 2013-06-04T11:12:12.840 に答える