2017-08-29 45 views
0

我在我的Android Studio上使用Google地圖。我正在嘗試製作一個跟蹤用戶的GPS。我遇到的問題是每次移動手機時,應用程序會在每次更新位置時縮小地圖。我不知道爲什麼會發生這種情況。感謝你們!地圖放大更新更改

這裏是我的代碼

private GoogleMap mMap; 
    LocationManager locationManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 
     // 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); 
     locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

      return; 
     } 

     if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { 

      locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() { 
       @Override 
       public void onLocationChanged(Location location) { 
        double latitude = location.getLatitude(); 
        double longitude = location.getLongitude(); 

        LatLng latLng = new LatLng(latitude, longitude); 
        Geocoder geocoder = new Geocoder(getApplicationContext()); 
        try { 
         List<Address> addressList = geocoder.getFromLocation(latitude, longitude, 1); 
         String str = addressList.get(0).getLocality()+","; 
         str += addressList.get(0).getCountryName(); 
         mMap.addMarker(new MarkerOptions().position(latLng).title(str)); 
         mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10.2f)); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 


     } 
     else if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){ 
      locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() { 
       @Override 
       public void onLocationChanged(Location location) { 
        double latitude = location.getLatitude(); 
        double longitude = location.getLongitude(); 

        LatLng latLng = new LatLng(latitude, longitude); 
        Geocoder geocoder = new Geocoder(getApplicationContext()); 
        try { 
         List<Address> addressList = geocoder.getFromLocation(latitude, longitude, 1); 
         String str = addressList.get(0).getLocality()+","; 
         str += addressList.get(0).getCountryName(); 
         mMap.addMarker(new MarkerOptions().position(latLng).title(str)); 
         mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 


    } 

回答

1

您使用GoogleMap.moveCamera所以它的移動和LocationManager.NETWORK_PROVIDER你與變焦移動相機。如果你不想變焦可用CameraUpdateFactory.newLatLng,你在LocationManager.GPS_PROVIDER

1

做了更換行:

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(的latLng,10.2f))

有:

mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));