Android上的Google Map工具栏未显示

问题描述 投票:2回答:1

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

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

map.getUiSettings().setMapToolbarEnabled(true);

当我单击标记时,它显示在我的信息窗口中,而不显示在工具栏上。

google maps needs example

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

下面是我的代码:

@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;
    }
android google-maps maps toolbar
1个回答
2
投票

仅来自您的return false;中的onMarkerClick()

来自the documentation

public abstract boolean onMarkerClick(标记标记)

返回

如果侦听器已消耗事件(即不应发生默认行为),则为true,否则为false(即应发生默认行为)。摄像机的默认行为是将其移动到标记并显示一个信息窗口。

© www.soinside.com 2019 - 2024. All rights reserved.