gpt4 book ai didi

android - 位置按钮不起作用 GoogleMaps v2

转载 作者:行者123 更新时间:2023-11-29 20:08:17 27 4
gpt4 key购买 nike

我正在尝试使用 Google map 上的位置按钮获取我的当前位置,但我遇到了一些问题。使用新的运行时权限(API 级别 23),我不知道我是否做得很好。使用下面的代码,当我使用虚拟设备 API 23 时,位置按钮不会出现,而对于虚拟设备 API 22,它会出现但不执行任何操作。那么可能是什么问题呢?

    public class MapsActivity extends FragmentActivity implements        OnMapReadyCallback{

private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// 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);
}

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

LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
} else {
// Show rationale and request permission.
}

}

在 list 文件中:

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

提前致谢..

最佳答案

在 api 级别 23 中,您需要以编程方式检查权限。您正在检查位置权限,如果被授予,则将位置设置为启用。如果未获得许可,您可以请求许可。

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mMap.setMyLocationEnabled(true);
} else {
ActivityCompat.requestPermissions(MapActivity.this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},REQUEST_CODE);
}

然后您可以通过覆盖此方法来处理结果。

@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//do something
} else {
finish();
}
break;
}
}
}

您还可以从模拟器的设置中为您的应用程序授予权限。

尝试后告诉我。祝你好运。

编辑:您需要为 mylocation 按钮实现一个点击监听器。

final GoogleMap mMap = map; 
map.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
@Override
public boolean onMyLocationButtonClick() {
LatLng loc = new LatLng(mMap.getMyLocation().getLatitude(),mMap.getMyLocation().getLongitude());
mMap.moveCamera(CameraUpdateFactory.newLatLng(loc));
return true;
}
});

关于android - 位置按钮不起作用 GoogleMaps v2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35348604/

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