簡體   English   中英

如果用戶不允許Android中地圖的精細位置權限,則添加默認位置

[英]Adding Default Location if User Doesn't Allow Permission for a Fine Location for a Map in Android

我開始學習運行時權限。 我有一張地圖,並且獲得了我的許可。 如果用戶允許精確的位置-地圖會縮放到其當前位置,如果用戶不允許,地圖會保留在該位置。 我想做的而不是將地圖留在原處是這樣的: 如果用戶不允許訪問其位置的權限,則地圖應放大到我的自定義位置 (格林威治)。

我的地圖片段:

        mapView.getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(GoogleMap googleMap) {
            mMap = googleMap;

            if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                    ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)) {

                } else {
                    ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_LOCATION_REQUEST_CODE);
                }
                return;
            }

            mMap.setMyLocationEnabled(true);
            LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
            Criteria criteria = new Criteria();

//                if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION)
//                        == PackageManager.PERMISSION_GRANTED) {
//                    mMap.setMyLocationEnabled(true);
//                } else {
//                    // Show rationale and request permission.
//                }

            //Disable Map Toolbar:
            mMap.getUiSettings().setMapToolbarEnabled(false);

            // Get the name of the best provider and current location
            String provider = null;
            if (locationManager != null) {
                provider = locationManager.getBestProvider(criteria, true);
            }
            // Get current location
            Location myLocation = null;
            if (locationManager != null) {
                myLocation = locationManager.getLastKnownLocation(provider);
            }

            // Set default latitude and longitude to Greenwich
            double latitude = 51.4825766;
            double longitude = -0.0076589;

            // Get latitude and longitude of the current location and a LatLng object
            if (myLocation != null) {
                latitude = myLocation.getLatitude();
                longitude = myLocation.getLongitude();
            }

            CameraPosition cameraPosition = new CameraPosition.Builder()
                    .target(new LatLng(latitude, longitude)).zoom(14).build();
            mMap.animateCamera(CameraUpdateFactory
                    .newCameraPosition(cameraPosition));

}

您可以使用以下代碼手動縮放到位置:

CameraUpdate center=CameraUpdateFactory.newLatLng(new LatLng(latitude,
longitude));

CameraUpdate zoom=CameraUpdateFactory.zoomTo(15);

map.moveCamera(center);
map.animateCamera(zoom);

找不到解決方案,所以我將權限放入父活動中。 我認為這是一個已知的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM