Установка маркеров на карте невидимыми и видимыми с помощью кнопок - PullRequest
0 голосов
/ 15 февраля 2020

Я создаю приложение, которое позволяет пользователям просматривать карту с указанием c местоположений на карте. когда они выбирают кнопку, она показывает только определенные местоположения c. например, если вы выберете кнопку ночных клубов, она покажет только пользовательские ночные клубы, если они снова нажмут кнопку ночных клубов, местоположения исчезнут.

, поэтому в основном маркеры Speci c исчезают и снова появляются.

У меня есть представление о том, как это работает, но я не могу обойти это.

любая помощь?

вот что у меня есть

Часть кода, который вы см. в java классе реализует функцию поиска, так что можно игнорировать. это к нижней части страницы, где мне нужно посмотреть

Спасибо

MapActivity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">


    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="646dp"
        tools:context=".BarsMapActivity" />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <Button
            android:id="@+id/barsbtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="BarsShow"
            android:text="Bars" />


</LinearLayout>

</LinearLayout>


BarsActivity.java





public class BarsMapActivity extends FragmentActivity implements OnMapReadyCallback {


    private GoogleMap mMap;
    SupportMapFragment mapFragment;
    SearchView searchView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);
        searchView = findViewById(R.id.sv_location);
        mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.google_map);


        searchView.setOnQueryTextListener((new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                String location = searchView.getQuery().toString();
                List<Address> addresslist = null;


                if (location != null || !location.equals("")) {
                    Geocoder geocoder = new Geocoder(BarsMapActivity.this);
                    try {
                        addresslist = geocoder.getFromLocationName(location, 1);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    Address address = addresslist.get(0);
                    LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude());
                    mMap.addMarker(new MarkerOptions().position(latLng).title(location));
                    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));

                }
                return false;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                return false;
            }
        }));

        mapFragment.getMapAsync(this);

        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        // SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
        //      .findFragmentById(R.id.map);
        // mapFragment.getMapAsync(this);
    }


    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        Button BarBtn;
        Marker bars;
        Marker nightclubs;
        List<Marker> markers = new ArrayList<>();


        BarBtn = (Button) findViewById(R.id.barsbtn);

        // Add a marker in Sydney and move the camera




        nightclubs = mMap.addMarker(new MarkerOptions().position(new LatLng(53.335494, -6.263579)).title("Copper Face Jacks").snippet("Nightclub").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
        nightclubs = mMap.addMarker(new MarkerOptions().position(new LatLng(53.335942, -6.263552)).title("Dicey's Garden Club").snippet("Nightclub").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
        nightclubs = mMap.addMarker(new MarkerOptions().position(new LatLng(53.348158, -6.261998)).title("The Academy").snippet("Nightclub").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
        nightclubs = mMap.addMarker(new MarkerOptions().position(new LatLng(53.347076, -6.254171)).title("O'Reilly's").snippet("Nightclub").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));


        bars = mMap.addMarker(new MarkerOptions().position(new LatLng(53.336163, -6.265102)).title("Flannery's Bar").snippet("Bar").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET)));
        bars = mMap.addMarker(new MarkerOptions().position(new LatLng(53.345139, -6.265858)).title("Bab Bobs").snippet("Bar").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET)));
        bars = mMap.addMarker(new MarkerOptions().position(new LatLng(53.348158, -6.261998)).title("River Bar").snippet("Bar").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET)));

        markers.add(nightclubs);
        markers.add(bars);

        mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {

                marker.remove();
                return true;
            }
        });

    }

        }
...