显示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>