有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java显示我的当前位置

我正在使用Android studio制作一个基本的谷歌地图应用程序,我需要做的第一件事就是在应用程序打开后立即显示我的当前位置。我使用的是谷歌地图活动模板,我用谷歌地图API指南页面中的一个函数替换了Sydney dummy Coordination函数,但它仍然不起作用。我真的很感激你能帮我走


共 (2) 个答案

  1. # 1 楼答案

    您需要有位置权限,但我相信通过实现OnMyLocationButtonClickListenerOnMyLocationClickListener接口,您需要的相对简单。查看文档here

  2. # 2 楼答案

    您需要获取FusedLocationProviderClient:

    FusedLocationProviderClient mFusedLocationProviderClient = 
    LocationServices.getFusedLocationProviderClient(this); 
    

    试试这个:

    private void getDeviceLocation() {
            try {
                if (mLocationPermissionGranted) {
                    Task locationResult = mFusedLocationProviderClient.getLastLocation();
                    locationResult.addOnCompleteListener(this, new OnCompleteListener() {
                        @Override
                        public void onComplete(@NonNull Task task) {
    
                            if (task.isSuccessful()) {
                                imHere = (Location) task.getResult();
    
                                LatLng latLng = new LatLng(imHere.getLatitude(), imHere.getLongitude());
                                MarkerOptions markerOptions = getMarkerOptions(latLng, "You here",
                                        BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
    
                                imHereMarker = mMap.addMarker(markerOptions);
                                mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, DEFAULT_ZOOM));
    
    
    
                            } else {
                                Log.d(TAG, "Current location is null. Using defaults.");
                                Log.e(TAG, "Exception: %s", task.getException());
                                mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mDefaultLocation, DEFAULT_ZOOM));
                                mMap.getUiSettings().setMyLocationButtonEnabled(false);
                            }
                        }
                    });
                }
            } catch(SecurityException e)  {
                Log.e("Exception: %s", e.getMessage());
            }
        }