16

(Google Maps API v2を使用するAndroidアプリでは)Google Maps Web APIの場合と同様に、カテゴリに応じてGoogleMapオブジェクトのマーカーを非表示または表示したいと思います。例:

私は50個のマーカーを備えたGoogleMapを持っています。そのうちの20個はレストランを表し、20個はバス停を表し、10個は映画館を表しています。

AndroidのGoogleマップAPIv2で、たとえばチェックボックスをオフにした場合にすべてのレストランマーカーを非表示にすることで、これらのマーカーをフィルタリングすることは可能ですか?

私はそのようなことをしたいのですが、GoogleマップAPI v2を使用している私のAndroidデバイスで:http://www.geocodezip.com/v3_MW_example_categories.html

基本的な質問で申し訳ありませんが、私は初心者です。

4

4 に答える 4

29

この方法を試してください。

 Marker restuarantMarkers = gMap.addMarker(new MarkerOptions()
                .position(latlng)
                .title("MyPlace").icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_pin)).draggable(true));

クリックイベント時

  restuarantMarkers.setVisible(false);

この方法は、loop..を使用して行うことができます。

それがあなたのために働くかどうか私に知らせてください。

于 2013-01-24T19:10:25.053 に答える
3

場所をフィルタリングする場合は、ダイアログを使用できます。

final Dialog dialog = new Dialog(context);
        dialog.setContentView(R.layout.dialog);
        Button bt_ok = (Button) dialog.findViewById(R.id.button1);
        final CheckBox cb1 = (CheckBox) dialog.findViewById(R.id.checkBox1);
        final CheckBox cb2 = (CheckBox) dialog.findViewById(R.id.checkBox2);
        dialog.setTitle("Category");

        bt_ok.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                mMap.clear();
                if (cb1.isChecked()){
                    mMap.addMarker(new MarkerOptions().position(new LatLng(44.109798, 15.242270)).title("Pin").icon(BitmapDescriptorFactory.fromResource(R.drawable.museum)));
                }
                if (cb2.isChecked()){
                    mMap.addMarker(new MarkerOptions().position(new LatLng(44.209798, 15.392270)).title("Pin 2").icon(BitmapDescriptorFactory.fromResource(R.drawable.restaurants)));
                }
                dialog.dismiss();
            }

        });

        dialog.show();
于 2013-03-21T11:22:08.430 に答える
0

はい、できます!そして、これがその方法です...

// mMapは、すでに初期化されているGoogleMapのインスタンスです。

mMap.setOnCameraChangeListener(getCameraChangeListener());
getCameraChangeListener() 
public OnCameraChangeListener getCameraChangeListener()

{
return new OnCameraChangeListener()
{
    @Override
    public void onCameraChange(CameraPosition position)

    {
        addItemsToMap(this.items);
    }

};

}

//「Item」クラスには、少なくとも一意のID、緯度、経度が必要です。

private void addItemsToMap(List<Item> items)
{
  if(this.mMap != null)

{

    LatLngBounds bounds = this.mMap.getProjection().getVisibleRegion().latLngBounds;

    for(Item item : items)
    {

        if(bounds.contains(new LatLng(item.getLatitude(), item.getLongitude()))

        {
            if(!courseMarkers.containsKey(item.getId()))

            {

                this.courseMarkers.put(item.getId(),     this.mMap.addMarker(getMarkerForItem(item)));

            }

        }
        else
        {

            if(courseMarkers.containsKey(item.getId()))

            {

             courseMarkers.get(item.getId()).remove();
             courseMarkers.remove(item.getId());

            }

        }

    }

    }

   }
于 2013-01-24T18:28:45.113 に答える
0

ここで、LocationArrayは、マップ上にプロットされるロケーションのArrayListです。マップ上にプロットされたすべてのマーカーを表示したいと思います。

 private void FitAllMarkers() {


    LatLngBounds.Builder builder = new LatLngBounds.Builder();
    for (int i = 0; i < LocationArray.size(); i++) {
        builder.include(new LatLng(Double.parseDouble(LocationArray.get(i).getLat()), Double.parseDouble(LocationArray.get(i).getLng())));

    }


    LatLngBounds bounds = builder.build();
    mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100));

}
于 2018-07-16T09:18:01.073 に答える