Google Android 上的地图工具栏未显示

Google Map toolbar on Android does not showing

我正在使用 google 地图 API,并且我已经为标记创建了自定义信息窗口。

我需要显示工具栏地图,但是使用这个方法

map.getUiSettings().setMapToolbarEnabled(true);

当我单击标记时,会显示我的信息窗口而不是工具栏。

我想在单击标记时显示工具栏。

下面是我的代码:

@Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        mMap.getUiSettings().setMapToolbarEnabled(true);
        mMap.setOnMarkerClickListener(this);
        mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
            @Override
            public void onInfoWindowClick(Marker marker) {
                MarkerCouple idtype = (MarkerCouple) marker.getTag();

                if (idtype.getType() == ResourceType.EVENTS 
                     && currentEvents.get(idtype.getID()) != null) {

                    Resources resources = currentResources
                            .get(currentEvents.get(idtype.getID()).getRes_ID());
                    Events event = currentEvents.get(idtype.getID());

                    Intent i = new Intent(MainActivity.this, ShowEventActivity.class);
                    i.putExtra(Variable.USER_JSON, user.toJSON());
                    i.putExtra(Variable.EVENT_JSON, event.toJSON());
                    i.putExtra(Variable.RESOURCE_JSON, resources.toJSON());

                    startActivityForResult(i, Variable.SHOW_EVENT);
                }

                if (idtype.getType() == ResourceType.PLACES
                     && currentPlaces.get(idtype.getID()) != null) {
                    Resources resources = currentResources
                            .get(currentPlaces.get(idtype.getID()).getRes_ID());
                    Places place = currentPlaces.get(idtype.getID());

                    Intent i = new Intent(MainActivity.this, ShowPlaceActivity.class);
                    i.putExtra(Variable.USER_JSON, user.toJSON());
                    i.putExtra(Variable.PLACE_JSON, place.toJSON());
                    i.putExtra(Variable.RESOURCE_JSON, resources.toJSON());

                    startActivityForResult(i, Variable.SHOW_PLACE);
                }
            }
        });

        mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
            @Override
            public View getInfoWindow(Marker marker) {
                View v = getLayoutInflater().inflate(R.layout.marker_preview, null);
                ImageView m = (ImageView) v.findViewById(R.id.marker_image);
                m.setImageBitmap(Bitmap.createScaledBitmap(imageToShow, 600, 400, true));
                return v;
            }

            @Override
            public View getInfoContents(Marker marker) {
                return null;
            }
        });
        new MarkerAsync().execute();
    }

    @Override
    public boolean onMarkerClick(final Marker marker) {
        MarkerCouple idtype = (MarkerCouple) marker.getTag();

        if (idtype.getType() == ResourceType.EVENTS && currentEvents.get(idtype.getID()) != null) {
            Events event = currentEvents.get(idtype.getID());
            final Resources resources = currentResources.get(event.getRes_ID());
            Picasso.with(MainActivity.this).invalidate(Variable.DOWNLOAD_URL + resources.getURI());
            new AsyncTask<Void, Void, Void>() {
                @Override
                protected Void doInBackground(Void... params) {
                    try {
                        imageToShow = Picasso.with(MainActivity.this).load(Variable.DOWNLOAD_URL + resources.getURI()).get();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    return null;
                }

                @Override
                protected void onPostExecute(Void v) {
                    marker.showInfoWindow();
                }
            }.execute();
        }


        if (idtype.getType() == ResourceType.PLACES && currentPlaces.get(idtype.getID()) != null) {
            Places place = currentPlaces.get(idtype.getID());
            final Resources resources = currentResources.get(place.getRes_ID());
            Picasso.with(MainActivity.this).invalidate(Variable.DOWNLOAD_URL + resources.getURI());
            Picasso.with(MainActivity.this).invalidate(Variable.DOWNLOAD_URL + resources.getURI());
            new AsyncTask<Void, Void, Void>() {
                @Override
                protected Void doInBackground(Void... params) {
                    try {
                        imageToShow = Picasso.with(MainActivity.this).load(Variable.DOWNLOAD_URL + resources.getURI()).get();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    return null;
                }

                @Override
                protected void onPostExecute(Void v) {
                    marker.showInfoWindow();
                }
            }.execute();
        }
        return true;
    }

只有 return false; 来自你的 onMarkerClick()

来自the documentation

public abstract boolean onMarkerClick (Marker marker)

Returns

true if the listener has consumed the event (i.e., the default behavior should not occur), false otherwise (i.e., the default behavior should occur). The default behavior is for the camera to move to the marker and an info window to appear.