Проблема с MapView при использовании MenuSlider с фрагментом - PullRequest
0 голосов
/ 16 ноября 2018

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.android.gms.maps.MapView
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <ImageView
            android:id="@+id/myLocation_custom"
            android:layout_alignParentBottom="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="@dimen/_10sdp"
            android:layout_alignParentRight="true"
            android:src="@drawable/gps_"/>


    </RelativeLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="@dimen/_45sdp"
        android:orientation="horizontal"
        android:visibility="visible">

        <ImageView
            android:id="@+id/backImage"
            android:layout_width="@dimen/_40sdp"
            android:layout_height="@dimen/_40sdp"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="@dimen/_5sdp"
            android:layout_marginStart="@dimen/_5sdp"
            android:padding="@dimen/_5sdp"
            android:visibility="invisible"
            android:src="@drawable/menu_icon" />

        <com.app.copweednow.uc.UserTextView
            android:visibility="invisible"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="@dimen/_5sdp"
            android:layout_marginStart="@dimen/_5sdp"
            android:tag="700"
            android:layout_weight="1"
            android:text="@string/near_by_drivers"
            android:textAllCaps="true"
            android:textColor="@color/tw__composer_black"
            android:textSize="@dimen/_14sdp" />

        <ImageView
            android:id="@+id/notifications"
            android:layout_width="@dimen/_30sdp"
            android:layout_height="@dimen/_30sdp"
            android:layout_gravity="center"
            android:layout_marginRight="@dimen/_5sdp"
            android:padding="@dimen/_5sdp"
            android:tint="@color/dark_gray"
            android:src="@drawable/noti"
            />
    </LinearLayout>
</FrameLayout>

при входе в MainActivity, то есть фрагмент по умолчанию

при выполнении действия, например сдвиг выдвижного ящика

При использовании пользовательского макета в MapView IIt показывает мне белый экран на карте.Когда я выполняю какие-либо действия с помощью MenuDrawer, он отображает карту.

Я также пробовал SupportMapFragment, но при использовании пользовательской карты карта покрывается белым макетом.

Извините за плохой английский.

    MapView mMapView;
    Dialog mDialog;
    Marker markerOptions;


    ImageView notifications;
    Context context;
    private GoogleMap gMap;
    private Double Latitude = 0.00;
    private Double Longitude = 0.00;
    private Map<Marker, String> markers = new HashMap<>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }



    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.try_map, container, false);
        mMapView = (MapView) view.findViewById(R.id.map);
        mMapView.onCreate(savedInstanceState);
        mMapView.onResume(); // needed to get the map to display immediately
        try {
            MapsInitializer.initialize(getActivity().getApplicationContext());
        } catch (Exception e) {
            e.printStackTrace();
        }
        mMapView.getMapAsync(this);
}

 @Override
    public void onMapReady(GoogleMap googleMap) {


        gMap = googleMap;

        if (ActivityCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(getActivity(), new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 1001);
            googleMap.setMyLocationEnabled(true);
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 1001);
//            buildGoogleApiClient();
            googleMap.setMyLocationEnabled(true);
            // mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        }

        // For showing a move to my location button

      //  googleMap.setMyLocationEnabled(true);

        googleMap.getUiSettings().setMyLocationButtonEnabled(false);
        googleMap.getUiSettings().setCompassEnabled(false);
        googleMap.getUiSettings().setMapToolbarEnabled(false);

        GPSTracker mGPS = new GPSTracker(getActivity());
        if (mGPS.canGetLocation()) {
            mGPS.getLocation();
            SeekersMap(String.valueOf(mGPS.getLatitude()), String.valueOf(mGPS.getLongitude()));
        }
        // For dropping a marker at a point on the Map
        LatLng sydney = new LatLng(mGPS.getLatitude(), mGPS.getLongitude());
        // googleMap.addMarker(new MarkerOptions().position(sydney).title("Marker Title").snippet("Marker Description"));

        // For zooming automatically to the location of the marker
        CameraPosition cameraPosition = new CameraPosition.Builder().target(sydney).zoom(20).build();
        googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
...