无法在标记中显示两种类型的信息窗口

时间:2014-12-17 08:59:46

标签: android google-maps google-maps-markers infowindow

显示Google地图时,制造商上方会显示默认信息窗口。 如果我再次单击标记,则会显示自定义信息窗口。 但是,当我点击地图时,所有信息都会消失。我希望默认的infowindow始终保持在地图上。 关键是我想继续显示最初显示的infowindow,即使显示新的infowindow。 我该怎么办?

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mMap = ((SupportMapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
        moveToLocation();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.map_page, null);
    }

    protected void moveToLocation() {
        CameraUpdate cu = CameraUpdateFactory.newLatLngZoom(new LatLng(mLatitude, mLongitude), 15);
        mMap.moveCamera(cu);

        MarkerOptions options = new MarkerOptions().position(new LatLng(mLatitude, mLongitude)).title(mCompany);
        mMarker = mMap.addMarker(options);
        mMarker.showInfoWindow();

        mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng latLng) {
                mMap.setInfoWindowAdapter(new CustomInfoAdapter());
            }
        });
        mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                mMap.setInfoWindowAdapter(new CustomInfoAdapter());
                return false;
            }
        });
    }

    private class CustomInfoAdapter implements GoogleMap.InfoWindowAdapter {
        private View mWindow;

        public CustomInfoAdapter() {
            mWindow = getActivity().getLayoutInflater().inflate(R.layout.marker_window, null);
        }

        @Override
        public View getInfoWindow(Marker marker) {
            render(marker, mWindow);
            return mWindow;
        }

        @Override
        public View getInfoContents(Marker marker) {
            return null;
        }

        private void render(Marker marker, View view) {
            ImageView badge = (ImageView) view.findViewById(R.id.badge);
            badge.setImageResource(R.drawable.ic_launcher);
            TextView title = (TextView) view.findViewById(R.id.title);
            TextView snippet = (TextView) view.findViewById(R.id.snippet);
            title.setText(mCompany);
            snippet.setText(mAddress);
        }
    }

XML

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

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

</LinearLayout>

0 个答案:

没有答案