2016-06-07 13 views
0

Ich bin neu in Google Maps API, also frage ich mich, wie bekomme ich Google Maps, um meine aktuelle Position zu erkennen, wenn es zuerst geladen wird. Momentan kann es nur eine Markierung eines fest codierten Ortes anzeigen, aber ich möchte, dass es mein aktueller Standort ist.Wie bekomme ich den aktuellen Standort mit Google Maps API in Android?

Dies ist mein aktueller fest codierter Ortscode:

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap 
    LatLng test = new LatLng(33.8675,151.2070); 
    mMap.addMarker(new MarkerOptions().position(test).title("test")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(test)); 
} 
+0

Check [diese] (http://stackoverflow.com/a/37203191/5392118) antworte bitte. –

Antwort

0

dies auf onActivityResult hinzufügen

LatLng latLng = new LatLng(place.getLatLng().latitude,place.getLatLng().longitude); 
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 
googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
googleMap.animateCamera(CameraUpdateFactory.zoomTo(15)); 

und fügen Sie diese onMapReady

googleMap.setOnMyLocationChangeListener(myLocationChangeListener); 

und fügt 1 Methode

private OnMyLocationChangeListener myLocationChangeListener = new OnMyLocationChangeListener() { 
     @Override 
     public void onMyLocationChange(Location location) { 
      if(awal) { 
       awal=false; 
       googleMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude()))); 
       googleMap.animateCamera(CameraUpdateFactory.zoomTo(13)); 
      } 
     } 
    }; 
+0

Hallo, danke für deine Antwort. Einige Fragen an dich. Was ist onActivityResult? Und wie erkläre ich "Ort"? – purplewind

+0

Laut der Dokumentation ist 'setOnMyLocationChangeListener' veraltet. Sie sollten stattdessen FusedLocationProviderApi verwenden. – antonio

+0

onActivityResult befindet sich in Ihrer Kartenklasse. Das 'place' wird mit Lating deklariert –

2

Sie können diesem tutorial folgen. Sie müssen den LocationManager verwenden, um den besten Anbieter zu erhalten und den Standort zu ermitteln.

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //show error dialog if GoolglePlayServices not available 
     if (!isGooglePlayServicesAvailable()) { 
      finish(); 
     } 
     setContentView(R.layout.activity_my); 
     SupportMapFragment supportMapFragment = 
       (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.googleMap); 
     googleMap = supportMapFragment.getMap(); 
     googleMap.setMyLocationEnabled(true); 
     LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
     Criteria criteria = new Criteria(); 
     String bestProvider = locationManager.getBestProvider(criteria, true); 
     Location location = locationManager.getLastKnownLocation(bestProvider); 
     if (location != null) { 
      onLocationChanged(location); 
     } 
     locationManager.requestLocationUpdates(bestProvider, 20000, 0, this); 
    } 

Diese Dienste ermöglichen Anwendungen regelmäßige Aktualisierungen des Geräts des geographischen Lage zu erhalten, oder eine anwendungsspezifischen abzufeuern Intent, wenn das Gerät die Nähe eines bestimmten geographischen Lage eintritt.

Schauen Sie sich diese Links zum Thema:

-1
public void onMapReady(GoogleMap googleMap) { 
    gMap = googleMap; 


    if (!gMap.isMyLocationEnabled()) 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      // TODO: Consider calling 
      // ActivityCompat#requestPermissions 
      // here to request the missing permissions, and then overriding 
      // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
      //           int[] grantResults) 
      // to handle the case where the user grants the permission. See the documentation 
      // for ActivityCompat#requestPermissions for more details. 
      ActivityCompat.requestPermissions(this,new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 1); 
      ActivityCompat.requestPermissions(this,new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, 1); 
      ActivityCompat.requestPermissions(this,new String[]{android.Manifest.permission.INTERNET}, 1); 


      Toast.makeText(this, "Grant", Toast.LENGTH_LONG).show(); 

      return; 


    }else { 
      Criteria criteria = new Criteria(); 
      LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
      String provider = locationManager.getBestProvider(criteria, false); 
      Location location = locationManager.getLastKnownLocation(provider); 
      float la = (float) location.getLatitude() ; 
      float lo = (float) location.getLongitude(); 
      Toast.makeText(this, la+"______________"+lo, Toast.LENGTH_LONG).show(); 


      LatLng TutorialsPoint = new LatLng(la, lo); 
      gMap.addMarker(new 
        MarkerOptions().position(TutorialsPoint).title("Tutorialspoint.com")); 
      gMap.moveCamera(CameraUpdateFactory.newLatLng(TutorialsPoint)); 
     } 

} 
Verwandte Themen