很长一段时间我都在使用这段代码,以便重复使用这些代码。片段中的GoogleMap - 当切换到另一个片段并再次打开MapFragment时,地图及其所有内容都像以前一样(不再放大,不需要重新设置标记,它只是在背景中#' 39;并再次提到前面):
public class MapFragmentGoogle extends Fragment implements SensorEventListener, OnMapLoadedCallback {
private static View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (rootView != null) {
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null)
parent.removeView(rootView);
}
try {
rootView = inflater.inflate(R.layout.fragment_map_google, container, false);
} catch (InflateException e) {
//
}
return rootView;
所以现在我从eclipse切换到AndroidStudio(我知道我迟到了),这是实现最新的PlayServices而我无法使用
map = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.gmap)).getMap();
以及' Reuse-Code"不再起作用了。我正在为这些事情分层。
我如何拥有一个完全保持原样的GoogleMap,没有新的init,没有从空间到位的zomming,在切换到另一个片段然后返回mapfragment时不重绘Polylines和Markersetc等?
答案 0 :(得分:0)
您仍然可以使用supportmapfragment,请找到以下代码:
XML:
<fragment
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
android:id="@+id/search1"
>
代码:
SupportMapFragment mapFragment;
mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.maps);
mapFragment.getMapAsync(this);
ldb = new LocationDatabase(this);
intentlat = null;
intentlng = null;
public void onMapReady(GoogleMap googleMap) {
m_map = googleMap;
map_false = true;
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
m_map.setMyLocationEnabled(true);
m_map.getUiSettings().setMapToolbarEnabled(true);
m_map.getUiSettings().setZoomControlsEnabled(true);
m_map.getUiSettings().setZoomGesturesEnabled(true);
m_map.getUiSettings().setMyLocationButtonEnabled(true);
geocoder = new Geocoder(this, Locale.getDefault());
addresses = null;
if (intentlat == null && intentlng == null) {
LatLng target3 = new LatLng(<latitude>, <81.488100>);
CameraPosition nnn = CameraPosition.builder().target(target3).zoom(14).build();
m_map.animateCamera(CameraUpdateFactory.newCameraPosition(nnn), 2000, null);
CameraPosition nnn = CameraPosition.builder().target(target3).zoom(14.0f).build();
m_map.animateCamera(CameraUpdateFactory.newCameraPosition(nnn), 2000, null);
}