Warum wird Google Maps beim ersten Start nicht automatisch auf den Standort des Nutzers zoomen?

Treewallie

Wenn der Nutzer GoogleMapsActivity zum ersten Mal betritt, werden sie nicht automatisch an ihren Standort weitergeleitet. Der Benutzer muss auf das kleine Symbol für den Standortsymbol oben rechts klicken, um ihn an seinen Standort zu bringen.

Ich habe versucht, newLatLngZoom (latLng, zoom) zu verwenden, aber das hat nicht funktioniert. Und ich habe alle vorgeschlagenen Fragen durchgesehen, bevor ich diese Frage gestellt habe, und keine hat funktioniert. Einige waren auch in iOS. Ich benutze Android.

public class AppetiteMapsActivity extends FragmentActivity implements OnMapReadyCallback,
    GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, com.google.android.gms.location.LocationListener

{

private GoogleMap mMap;
private GoogleApiClient googleApiClient;
private LocationRequest locationRequest;
private static final String TAG = "AppetiteMapsActivity";
private Location lastLocation;
private Marker currentUserLocationMarker;
private LocationManager locationManager;
private com.google.android.gms.location.LocationListener listener;
private static final int Request_User_Location_Code= 99;

private long UPDATE_INTERVAL = 2 * 1000;  /* 10 secs */
private long FASTEST_INTERVAL = 2000; /* 2 sec */


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_appetite_maps);


    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
    {
        checkUserLocationPermission();
    }

    // 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);

    checkLocation();

}


@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    // Add a marker in current user location and move the camera
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
    {
        buildGoogleApiClient();
        // Call current location of user
        mMap.setMyLocationEnabled(true);
    }

}

public boolean checkUserLocationPermission()
{
    if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
    {
        if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION))
        {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, Request_User_Location_Code);
        }
        else
            {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, Request_User_Location_Code);
            }
            return false;
    }
    else
    {
        return true;
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
    switch(requestCode)
    {
        case Request_User_Location_Code:

            if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
            {
                if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
                {
                    if (googleApiClient == null)
                    {
                        buildGoogleApiClient();
                    }
                    mMap.setMyLocationEnabled(true);
                }

            }

            else
            {
                Toast.makeText(this, R.string.on_request_permission_gps_not_located, Toast.LENGTH_LONG).show();
            }
            return;
    }
}

protected synchronized void buildGoogleApiClient()
{
    googleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();

    googleApiClient.connect();
}

@Override
public void onConnected(Bundle bundle) {
    {

        locationRequest = new LocationRequest();
        locationRequest.setInterval(1100);
        locationRequest.setFastestInterval(1100);
        locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
        {
            LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this);
        }
    }
}

@Override
public void onConnectionSuspended(int i) {
    Log.i(TAG, "Connection Suspended");
    googleApiClient.connect();
}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    Log.i(TAG, "Connection failed. Error: " + connectionResult.getErrorCode());
}

@Override
protected void onStart() {
    super.onStart();
    if (googleApiClient != null) {
        googleApiClient.connect();
    }
}

@Override
protected void onStop() {
    super.onStop();
    if (googleApiClient.isConnected()) {
        googleApiClient.disconnect();
    }
}

protected void startLocationUpdates() {
    // Create the location request
    locationRequest = LocationRequest.create()
            .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
            .setInterval(UPDATE_INTERVAL)
            .setFastestInterval(FASTEST_INTERVAL);
    // Request location updates
    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient,
            locationRequest, this);
    Log.d("reque", "--->>>>");
}

@Override
public void onLocationChanged(Location location)
{
    lastLocation = location;
    if (currentUserLocationMarker!=null)
    {
        currentUserLocationMarker.remove();
    }

    LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());

    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(latLng);
    markerOptions.title(getString(R.string.user_current_location_marker_title));
    markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW));

    currentUserLocationMarker = mMap.addMarker(markerOptions);


    mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
    mMap.animateCamera(CameraUpdateFactory.zoomBy(14));

    if(googleApiClient != null)
    {
        LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, this);
    }

}

private boolean checkLocation() {
    if(!isLocationEnabled())
        showAlert();
    return isLocationEnabled();
}

private void showAlert() {
    final AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setTitle(R.string.show_alert_title_enable_location)
            .setMessage(getString(R.string.show_alert_location_settings_off_1) +
                    getString(R.string.show_alert_location_settings_off_2))
            .setPositiveButton(R.string.show_alert_positive_button_location_settings, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface paramDialogInterface, int paramInt) {

                    Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                    startActivity(myIntent);
                }
            })
            .setNegativeButton(R.string.explain_negative_button, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface paramDialogInterface, int paramInt) {

                }
            });
    dialog.show();
}

private boolean isLocationEnabled() {
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ||
            locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
}

}

Ich erwarte, dass Google Maps beim ersten Aufrufen der Google Maps-Aktivität automatisch zum Standort des Nutzers wechselt. Stattdessen muss der Nutzer auf die Schaltfläche "Standort" in der oberen rechten Ecke klicken, um ihn dorthin zu senden. Vielen Dank für Ihre Hilfe und Beratung im Voraus!

Suryakant Bharti

Ich habe es versucht, newLatLngZoom(latLng, zoom)aber das hat nicht funktioniert.

Verwenden Sie es so, es wird funktionieren:

mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng, zoom));
mMap.getUiSettings().setRotateGesturesEnabled(false);
mMap.getUiSettings().setZoomControlsEnabled(false);

Hinweis:

  1. Zunächst aktivieren Sie die Zoomsteuerung.
  2. Dann machst du das Zoomen.
  3. Danach deaktivieren Sie die Zoomsteuerung.

Ich hoffe es hilft.

Referenz für weitere Informationen

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Wie verfolge ich den Standort eines Nutzers im Laufe des Tages in Google Maps?

Standort des Nutzers für Google Maps abrufen

Wie kann man die SwiftUI-Ansicht in UIViewControllerRepresentable einschließen, damit sich die Google Maps-Kamera beim Start auf den Standort des Benutzers konzentriert?

So fokussieren Sie die Google Maps-Kamera beim Start mithilfe von SwiftUI-Ansichten auf den aktuellen Standort des Benutzers

Google Books API: "Der Standort des Nutzers kann für den geografisch eingeschränkten Betrieb nicht ermittelt werden."

Flattern - Google Maps wartet nicht auf den Standort

Warum wird beim ersten Klick auf den Iconbutton nicht der Index plus eins angezeigt

Google Maps - zentriert auf den Standort des Benutzers

Android Maps - Wie zentriere ich die Karte automatisch auf den aktuellen Standort des Benutzers?

Auf den Benutzerstandort zoomen, beim ersten Laden nicht gezoomt, nachdem der Zugriff auf den Speicherort ermöglicht wurde

Die Sprachsynthese wird in Google Chrome beim ersten Laden nach dem Start des Browsers nicht angehalten

Apple: App fordert die Zustimmung des Nutzers zum Zugriff auf den Standort an, erklärt aber die Verwendung des Standorts nicht ausreichend

Warum wird @IBAction beim Start automatisch aufgerufen?

Warum wird beim Aufrufen des ersten Fragments das zweite Fragment automatisch aufgerufen?

Google Maps Center beim Zoomen

Warum wird beim Senden nicht nur beim ersten Klicken auf eine Schaltfläche ein Name angezeigt?

flattern, warum kann ich den Standort des Geräts nicht auf dem Bildschirm ausdrucken?

Zoomen Sie auf den aktuellen Standort, der mit der Navigationsleiste nicht funktioniert

Zentrieren Sie den Standort des Benutzers auf Google Maps, aber erlauben Sie die freie Bewegung

Wenn Sie die Karte auf den Standort des Benutzers zentrieren, wird der blaue Punkt nicht angezeigt

Infofenster wird nicht automatisch geschlossen (Google Maps)

YouTube-Einbettung wird beim ersten Laden nicht automatisch wiedergegeben. Wird beim Aktualisieren automatisch wiedergegeben

So suchen Sie den Standort auf Google Maps

So legen Sie in Google Maps Flutter den dynamischen Standort oder den Standort des Benutzers auf Kreis fest und zeigen Markierungen an, die sich nur innerhalb des Kreises befinden

Google Maps Infobubble Dynamic Content wird beim ersten Markierungsklick nicht geladen

Warum wird dieses Google Apps-Skript beim Öffnen nicht automatisch sortiert?

Warum wird der Wert des untergeordneten Zustands in der übergeordneten Rückruffunktion beim ersten Mal nicht aktualisiert?

Wenn Sie eine ArrayList erstellen, ohne den Objekttyp anzugeben, wird sie beim Hinzufügen des ersten Objekts automatisch erstellt?

Flutter iOS - kann den aktuellen Standort für initialCameraPosition nicht abrufen, bevor das Google Maps-Widget geladen wird

TOP Liste

  1. 1

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

  2. 2

    Wie füge ich mehrere Spalten in einer Spalte mit derselben Tabelle in SQL Server zusammen?

  3. 3

    Popup-Fenster oder mehrere Fenster mit PyQt5 / QtDesigner

  4. 4

    Gibt es eine sauberere Möglichkeit, Konstruktorargumente und Instanzeigenschaften einer Klasse in Typescript zu definieren?

  5. 5

    django-allauth Empfängersignal zum Hinzufügen einer Gruppenberechtigung zum Benutzer bei der Anmeldung

  6. 6

    Wie kann man Gitterquadrate dazu bringen, die Farbe zu ändern?

  7. 7

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  8. 8

    Scherz, wie man eine Funktion verspottet, die von einer verspotteten Funktion zurückgegeben wird

  9. 9

    Wählen Sie Geschwister vor einem Element aus

  10. 10

    Ändern Sie den Knotenpfad in das aktuelle Verzeichnis

  11. 11

    Ich kann nicht verstehen, wie man Go-Code in mehreren Dateien kompiliert

  12. 12

    Zählen Sie die Vorkommen jedes Werts in einem Tupel in Python

  13. 13

    Javascript wird nach dem AJAX-Aufruf nicht aktiviert, es sei denn, die Seite wurde aktualisiert

  14. 14

    Laden Sie das Bild perfekt in HTML Canvas

  15. 15

    CBCentralManager wird nach dem Verbinden neu gestartet

  16. 16

    So implementieren Sie Pushwoosh mit ionic 2

  17. 17

    Wie schiebe ich mein neues Element, ohne ein neues Mongoose-Element zu erstellen?

  18. 18

    Wie wird der Wert im Dropdown-Menü basierend auf den ausgewählten Daten / IDs angezeigt?

  19. 19

    Wie suche ich eine Zeichenfolge nach mehreren Zeichenfolgen und ersetze sie dann durch andere Zeichenfolgen? (Python)

  20. 20

    base js: Wie füge ich einem Objekt eine Eigenschaft auf die 'alte' Weise hinzu?

  21. 21

    Wie führe ich Junit-Tests über die Befehlszeile unter Windows ohne Paket aus?

heißlabel

Archiv