将标记移至Android Studio中的用户位置

时间:2018-11-14 21:16:37

标签: java android google-maps maps

我试图制作一个地图活动应用程序,该应用程序在运行时会使用标记在地图上显示用户的GPS位置。但是,在运行时,它只会在默认位置(悉尼)显示标记,请提供帮助。下面是我的代码。.我尝试了多种方法,但所有方法仍将我带到悉尼。我想做的是让该应用运行后直接将我带到我的位置。 下面是我的代码;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_real_time_location);
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PackageManager.PERMISSION_GRANTED);
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PackageManager.PERMISSION_GRANTED);
}



public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    LatLng sydney = new LatLng(-34, 151);
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));

    locationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {

            try {
                latLng = new LatLng(location.getLatitude(), location.getLongitude());

                mMap.addMarker(new MarkerOptions().position(latLng).title("My Current Position"));
                mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
            }
            catch (SecurityException e){
                e.printStackTrace();
            }
        }

        @Override
        public void onStatusChanged(String s, int i, Bundle bundle) {

        }

        @Override
        public void onProviderEnabled(String s) {

        }

        @Override
        public void onProviderDisabled(String s) {

        }
    };

    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

    try {
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_UPDATE_TIME, MIN_UPDATES_DISTANCE, locationListener);
    }
    catch (SecurityException e){
        e.printStackTrace();
    }
}

2 个答案:

答案 0 :(得分:0)

使用LocationCallback来获取您的最新位置:

\Stripe\Charge::all(["limit" => 3])

答案 1 :(得分:0)

您需要获取设备的最后一个已知位置,使用this链接获取最近的已知位置,然后在所需的位置显示标记。