2017-08-29 1 views
0

Ich verwende Google Maps auf meinem Android Studio. Ich versuche, ein GPS zu machen, das einen Benutzer verfolgt. Das Problem, das ich habe, ist, dass jedes Mal, wenn ich mit meinem Handy umziehe, die App jedes Mal aus der Karte zoomt, wenn der Standort aktualisiert wird. Ich weiß nicht, warum das passiert. Danke Jungs!Karten zoomt auf Update-Änderung

Hier ist mein Code

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(); 
        } 
       } 


    } 

Antwort

1

Sie verwenden GoogleMap.moveCamera so es bewegt und in LocationManager.NETWORK_PROVIDER Sie die Kamera mit Zoom bewegen. Wenn Sie nicht wollen, Zoom Sie CameraUpdateFactory.newLatLng verwenden können, wie Sie in LocationManager.GPS_PROVIDER tat

1

Linie ersetzen:

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

mit:

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