显示我当前的位置

时间:2018-03-15 04:47:56

标签: java google-maps-api-3 google-maps-android-api-2

我正在使用Android工作室制作一个基本的谷歌地图应用程序,我需要做的第一件事就是在应用程序打开后立即显示我的当前位置。我正在使用谷歌地图活动模板,我已经用Google Maps API指南页面中的一个取代了悉尼虚拟坐标功能,但它仍然没有做到这一点。我非常感谢帮助我前进。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您需要获取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());
        }
    }