2013-02-28 5 views
46

Ich habe nach einer Antwort gesucht, und niemand hat in irgendeiner Forumfrage geholfen. Ich habe die Tutorials durchsucht. Die API Guide sagt:So zeigen Sie meinen Standort in Google Maps für Android API an v2

Der Mein Standort Taste nur in der oberen rechten Ecke des Bildschirms angezeigt wird, wenn die My Location Schicht aktiviert ist.

Also ich habe nach diesem Layer Meine Lage gesucht und konnte nichts finden. Wie zeige ich meinen Standort auf einer Google Map an?

+0

mehrere vorhanden sind ot ihre Fragen zum Finden des aktuellen Standorts in Google Maps Android V2 auf SO. Mit diesem gesagt, ist hier eine Lösung, die Lage ermöglicht sowie Ihnen erlauben, auf Standortänderungen zu reagieren: http://stackoverflow.com/a/13753518/1103584 – DiscDev

+0

Danke für den Link. Ich hatte bereits herausgefunden, wie man auf das GPS zugreifen und die Karte auf den Benutzer zentrieren. Der API-Leitfaden kam dort durch. Ich suchte nach dem bestimmten Code, der den Standort des Benutzers auf der Karte als blauen Punkt anzeigt. – Yos233

Antwort

114

Der API-Leitfaden hat alles falsch (wirklich Google?). Mit Maps v2 müssen Sie die Anzeige einer Ebene nicht aktivieren. Es gibt einen einfachen Aufruf der GoogleMaps-Instanz, die Sie mit Ihrer Karte erstellt haben.

Google Documentation

Die eigentliche Dokumentation, die Google gibt Ihnen Ihre Antwort liefert. Rufen Sie

// map is a GoogleMap object 
map.setMyLocationEnabled(true); 

und beobachten Sie die Magie passieren.

+9

Gibt es eine Methode zum automatischen Klicken auf den MyLocationButton, um die Karte zu zentrieren? Jetzt muss ich LocationClient verwenden, um dasselbe zu tun, was der MyLocationButton tut. – iForests

+0

Ich glaube nicht, dass es eine Möglichkeit gibt, die MyLocation-Schaltfläche programmgesteuert aufzurufen. Sie können jedoch ein LocationManager-Objekt verwenden. – Yos233

+0

Dann können Sie ein CameraPosition-Objekt verwenden, um die Karte dorthin zu verschieben, wo Sie möchten. – Yos233

10

Um zu zeigen, die "My Location" Tasten Sie

map.getUiSettings().setMyLocationButtonEnabled(true); 

auf Ihrem Objekt GoogleMap verlangen.

+2

Aber zuerst muss die Karte den Benutzer zeigen Lage. Darüber habe ich gefragt. Die Schaltfläche ist nicht gut, wenn kein blauer Punkt vorhanden ist. – Yos233

+1

Wenn Sie MapView verwenden, dann: map.setMyLocationEnabled (true); map.getUiSettings(). SetMyLocationButtonEnabled (true); beide müssen geschrieben werden – Bam

31

Java-Code:

public class MapActivity extends FragmentActivity implements LocationListener { 

    GoogleMap googleMap; 
    LatLng myPosition; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_map); 

     // Getting reference to the SupportMapFragment of activity_main.xml 
     SupportMapFragment fm = (SupportMapFragment) 
     getSupportFragmentManager().findFragmentById(R.id.map); 

     // Getting GoogleMap object from the fragment 
     googleMap = fm.getMap(); 

     // Enabling MyLocation Layer of Google Map 
     googleMap.setMyLocationEnabled(true); 

     // Getting LocationManager object from System Service LOCATION_SERVICE 
     LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 

     // Creating a criteria object to retrieve provider 
     Criteria criteria = new Criteria(); 

     // Getting the name of the best provider 
     String provider = locationManager.getBestProvider(criteria, true); 

     // Getting Current Location 
     Location location = locationManager.getLastKnownLocation(provider); 

     if (location != null) { 
      // Getting latitude of the current location 
      double latitude = location.getLatitude(); 

      // Getting longitude of the current location 
      double longitude = location.getLongitude(); 

      // Creating a LatLng object for the current location 
      LatLng latLng = new LatLng(latitude, longitude); 

      myPosition = new LatLng(latitude, longitude); 

      googleMap.addMarker(new MarkerOptions().position(myPosition).title("Start")); 
     } 
    } 
} 

activity_map.xml:

<?xml version="1.0" encoding="utf-8"?> 
<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:map="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/map" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    class="com.google.android.gms.maps.SupportMapFragment"/> 

Sie Ihren aktuellen Standort in einem blauen Kreis erhalten.

+0

Schöne Antwort es funktioniert für mich –

+0

Vielen Dank UdiT, sieht sehr nett aus. Aber was machst du mit deiner 'latLing'-Variable? Dieser Code zeigt, dass er nicht verwendet wird. Danke. – Azurespot

+0

Ah, vergiss, ich denke, dass 2 LatLng-Objekte nicht benötigt werden, also habe ich eine gelöscht und stattdessen myPosition benutzt. Es funktionierte! Danke noch einmal! – Azurespot

7

Anruf GoogleMap.setMyLocationEnabled(true) in Ihrem Activity, und fügen Sie diese 2 Zeilen Code in der Manifest:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
11

Von android 6.0 Sie benötigen für Benutzer die Berechtigung zu überprüfen, wenn Sie GoogleMap.setMyLocationEnabled(true) verwenden wollen, müssen Sie Call requires permission which may be rejected by user Fehler erhalten

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) 
      == PackageManager.PERMISSION_GRANTED) { 
    mMap.setMyLocationEnabled(true); 
} else { 
// Show rationale and request permission. 
} 

, wenn Sie mehr lesen wollen, überprüfen google map docs

Verwandte Themen