Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每次我滚动/平移/拖动相机时,相机都会移回原始位置_Java_Android_Google Maps - Fatal编程技术网

Java 每次我滚动/平移/拖动相机时,相机都会移回原始位置

Java 每次我滚动/平移/拖动相机时,相机都会移回原始位置,java,android,google-maps,Java,Android,Google Maps,我正在创建一个Android应用程序,并设置了一个标准的谷歌地图活动。到目前为止,应用程序只显示用户的位置。相机设置为初始聚焦于用户位置。当我尝试在模拟器上滚动或拖动到新位置时,遇到了问题。我拖动鼠标,一旦我抬起鼠标,相机就会重置到原来的位置 onMapReady代码 public void onMapReady(GoogleMap googleMap) { mMap = googleMap; locationManager = (LocationManager)

我正在创建一个Android应用程序,并设置了一个标准的谷歌地图活动。到目前为止,应用程序只显示用户的位置。相机设置为初始聚焦于用户位置。当我尝试在模拟器上滚动或拖动到新位置时,遇到了问题。我拖动鼠标,一旦我抬起鼠标,相机就会重置到原来的位置

onMapReady代码

public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

        locationListener = new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {
                mMap.clear();
                LatLng currentLocation = new LatLng(location.getLatitude(), location.getLongitude());
                mMap.addMarker(new MarkerOptions().position(currentLocation).title("You Are Here"));
                CameraPosition cameraPosition = new CameraPosition.Builder()
                        .target(currentLocation)
                        .zoom(25)
                        .bearing(200)
                        .tilt(90)
                        .build();
                mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

                Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());

                try {
                    List<Address> listAddresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);

                       if (listAddresses.get(0).getAdminArea() != null) {
                           String address += listAddresses.get(0).getAdminArea();
                       }

                        Toast.makeText(MapsActivity.this, address, Toast.LENGTH_SHORT).show();
                        Log.i("Address", address);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

        if (ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1);
        } else {
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
            Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

            mMap.clear();
            LatLng userLocation = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
            mMap.addMarker(new MarkerOptions().position(userLocation).title("Your Location"));
            CameraPosition cameraPosition = new CameraPosition.Builder()
                    .target(userLocation)
                    .zoom(25)
                    .bearing(0)
                    .tilt(90)
                    .build();
            mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

        }
    }
public void onMapReady(谷歌地图谷歌地图){
mMap=谷歌地图;
locationManager=(locationManager)this.getSystemService(Context.LOCATION\u服务);
locationListener=新locationListener(){
@凌驾
已更改位置上的公共无效(位置){
mMap.clear();
LatLng currentLocation=新LatLng(location.getLatitude(),location.getLength());
mMap.addMarker(新的MarkerOptions().position(currentLocation).title(“您在这里”);
CameraPosition CameraPosition=新建CameraPosition.Builder()
.目标(当前位置)
.zoom(25)
.轴承(200)
.倾斜(90)
.build();
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
Geocoder Geocoder=新的Geocoder(getApplicationContext(),Locale.getDefault());
试一试{
List listAddresses=geocoder.getFromLocation(location.getLatitude(),location.getLatitude(),1);
if(listAddresses.get(0.getAdminArea()!=null){
字符串地址+=listAddresses.get(0.getAdminArea();
}
Toast.makeText(MapsActivity.this,address,Toast.LENGTH_SHORT).show();
Log.i(“地址”,地址);
}捕获(例外e){
e、 printStackTrace();
}
}
if(ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS\u FINE\u LOCATION)!=PackageManager.permission\u已授予){
ActivityCompat.requestPermissions(这个新字符串[]{Manifest.permission.ACCESS\u FINE\u LOCATION},1);
}否则{
locationManager.RequestLocationUpdate(locationManager.GPS\提供程序,0,0,locationListener);
Location lastKnownLocation=locationManager.getLastKnownLocation(locationManager.GPS\U提供程序);
mMap.clear();
LatLng userLocation=new LatLng(lastKnownLocation.getLatitude(),lastKnownLocation.getLength());
mMap.addMarker(新的MarkerOptions().position(userLocation.title)(“您的位置”);
CameraPosition CameraPosition=新建CameraPosition.Builder()
.target(用户位置)
.zoom(25)
.轴承(0)
.倾斜(90)
.build();
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
}
这是我必须在当前位置显示标记的代码。我还有获取当前位置的AdminArea的代码


我相信问题在于我的代码一直在运行,因此当我尝试拖动屏幕时,它只会重置到相机最初设置的位置。显示当前位置的Toast也会发生同样的情况。当我更改新位置时,这不会更新新信息。您是正确的。您正在设置相机位置在onLocationChange方法中,该方法会不断启动(此方法启动时,用户的位置不必改变太多)。因此,通过将相机位置设置为currentLocation,它将继续滚动地图。请尝试对其进行注释,看看会发生什么

            public void onLocationChanged(Location location) {
            mMap.clear();
            LatLng currentLocation = new LatLng(location.getLatitude(), location.getLongitude());
            mMap.addMarker(new MarkerOptions().position(currentLocation).title("You Are Here"));
            //CameraPosition cameraPosition = new CameraPosition.Builder()
            //        .target(currentLocation)
            //        .zoom(25)
            //        .bearing(200)
            //        .tilt(90)
            //        .build();
            //mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));