- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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);
} ///
}
最佳答案
如果不提供完整的代码实现或您遇到的错误,很难说为什么您的应用无法运行,但我已经测试了您的 fetchLastLocation
和 onMapReady
方法,它们对我来说效果很好。请运行下面的代码。
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/
For my specific use case, I need to fetch the device's real-time location updates and pass them t
我已经成功创建了一个带有 的 Activity FusedLocationProviderClient 返回特定时间段内的位置坐标。 但我希望它在后台服务中运行,该服务将坐标保存在本地数据库中,并且在
我在 android 中使用 FusedLocationProviderClient 类来获取用户的最后位置。一切都很好,我可以获得纬度和经度,但是 task.getResult().getBeari
在我的一项 Activity 中,我使用 FusedLocationProviderClient 来获取持续的位置更新。我的代码基于此方法:https://developer.android.com/
我尝试在 Android 上使用新的简化位置 API(在 GPS 11.0 中引入)。我编写了一个实现位置 API 的服务。但它只会触发并发送位置几秒钟(只有 2 次)。 public cla
public void getDeviceLocation() { fusedLocationClient = LocationServices.getFusedLocationPro
我刚刚将我的 Google 依赖项更新到 12.0.1,现在我在使用 FusedLocationProviderClient 时遇到此错误。 知道为什么会这样吗?查看源代码,我可以看到构造函数现在被隐
我在声明时遇到错误无法解析符号 'FusedLocationProviderClient' private FusedLocationProviderClient mFusedLocationClie
LocationRequest 现已弃用?它的替代品是什么? 我正在使用它,但最近收到了一条弃用消息。我现在应该做什么: val locationRequest = LocationRequest()
当接近传感器被激活时,我使用 FusedLocationProviderClient 来获取设备位置。当用户靠近接近传感器时,程序应该获取设备位置,但它没有获取必要的代码,因为我认为它卡在了 .isS
我在使用 Fused location Provider Api 的 Android 应用程序中遇到了一些奇怪的行为。 在某些设备中,此 api 不返回高度 我可以在 Moto G 2d genera
我正在实现 Xamarin Android 位置跟踪器并添加以下代码以停止位置更新。 public Task StopAsync() { if(IsTracking)
很抱歉,如果这真的很简单(也未能在 Marshmallow 模拟器上安装 google play 服务,并且有点紧张!)。 我的目标是在 Visual Studio 2017 (15.6.3) 上的
我通过单击按钮在我的应用程序中获取与 FusedLocationProviderClient 的坐标以存储到数据库中。问题是,当我重新启动手机或模拟器时,.getLastLocation() 为 nu
随着 FusedLocationProviderApi 被弃用,我很难使用 FusedLocationProviderClient 在单击按钮后仅一次获取用户的位置。 最佳答案 I'm having
我不明白为什么这个非常简单的 Activity 会产生内存泄漏。 它遵循此处给出的指南:https://developer.android.com/training/location/receive-
我曾经使用 FusedLocationApi,直到我得知它已被弃用(请参阅下面的引用资料)。实现起来很简单。正如文档所说,您需要将它与 GoogleApiClient 结合使用 LocationSer
我想使用最新的融合位置提供程序客户端在“后台服务”上获取位置更新。我不想使用所有人都在使用的位置监听器和 Google API 客户端。我还需要使用 google play 服务提供的位置设置 Api
我有一个 activity 扩展了一个名为 LocationAwareActivity 的基 class 所有这些 LocationAwareActivity activity 做的是创建一个定位服务
自从新的 Android 8 更新发布以来,有很多 limitations 强加于后台服务的工作方式。 所以我的应用需要在后台定期获取用户的位置,为此,我考虑使用 Android 网站建议的 Fuse
我是一名优秀的程序员,十分优秀!