gpt4 book ai didi

java - fusedLocationProviderClient 不工作和 MapActivity android

转载 作者:行者123 更新时间:2023-12-02 01:37:25 24 4
gpt4 key购买 nike

fusedLocationProviderClient 不起作用。

包含 map API 和所有必需的依赖项这是我的功能:

private void fetchLastLocation() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]
{Manifest.permission.ACCESS_FINE_LOCATION},REQUEST_CODE);
return;
}
Task<Location> task = fusedLocationProviderClient.getLastLocation();
task.addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if(location != null){
current = location;
SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapid);
supportMapFragment.getMapAsync(HomeActivity.this);
}
}
});
}

这是我的onMapReady(GoogleMap googleMap)函数:

@Override
public void onMapReady(GoogleMap googleMap) {
if(current != null) {
LatLng latLng = new LatLng(current.getLatitude(), current.getLongitude());
MarkerOptions markerOptions = new MarkerOptions().position(latLng).title("I am here");
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,25));
googleMap.addMarker(markerOptions);
} ///
}

最佳答案

如果不提供完整的代码实现或您遇到的错误,很难说为什么您的应用无法运行,但我已经测试了您的 fetchLastLocationonMapReady 方法,它们对我来说效果很好。请运行下面的代码。

import androidx.core.app.ActivityCompat;
import androidx.fragment.app.FragmentActivity;

import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Bundle;

import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

private FusedLocationProviderClient fusedLocationProviderClient;
private Location current;

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

fusedLocationProviderClient = new FusedLocationProviderClient(this);
fetchLastLocation();
}

private void fetchLastLocation() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]
{Manifest.permission.ACCESS_FINE_LOCATION}, 200);
return;
}

Task<Location> task = fusedLocationProviderClient.getLastLocation();
task.addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
current = location;
SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
supportMapFragment.getMapAsync(MapsActivity.this);
}
}
});
}

@Override
public void onMapReady(GoogleMap googleMap) {
if (current != null) {
LatLng latLng = new LatLng(current.getLatitude(), current.getLongitude());
MarkerOptions markerOptions = new MarkerOptions().position(latLng).title("I am here");
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 25));
googleMap.addMarker(markerOptions);
} ///
}
}

此外,我建议您仔细检查您是否已设置 a valid API key并且您已允许 location access在您的测试设备上。希望这可以帮助。如果有什么特别对您不起作用的地方,请告诉我,我会相应地修改我的答案。

关于java - fusedLocationProviderClient 不工作和 MapActivity android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57511009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com