android - Android/谷歌地图——模拟谷歌地图设备定位焦点
问题描述
我正在寻求有关我的 Android 应用程序的帮助。
在 Google 地图中,当您单击 MyLocationButton 时,相机将锁定设备的移动,直到地图被拖走。我试图在我的地图中模拟这种行为。
我当前的代码能够返回设备的位置并锁定它。问题在于更新锁定/解锁状态。
我的想法是: - 默认情况下,相机锁定到设备上。- 当相机移动时,检查它停止时的位置。如果它停在设备位置的顶部,则相机仍处于锁定状态。ELSE 相机已解锁。
这是正确的方法还是有更好的方法?
谢谢,代码:
@Override
public void onMapReady(GoogleMap googleMap) {
Log.d(TAG, "onMapReady: map loaded");
Toast.makeText(this, "Eat Safe!", Toast.LENGTH_SHORT).show();
map = googleMap;
if (locationPermissionGranted) {
getLastKnownLocation();
map.setMyLocationEnabled(true);
map.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
@Override
public boolean onMyLocationButtonClick() {
Log.d(TAG, "onMyLocationButtonClick: camera locked");
cameraLocked = true;
return true;
}
});
map.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
Log.d(TAG, "setOnCameraIdleListener: camera Idle");
LatLng cameraPosition = map.getCameraPosition().target;
if(cameraPosition.equals(myLocation)){
Log.d(TAG, "setOnCameraIdleListener: camera on top of device");
}else{
Log.d(TAG, "setOnCameraIdleListener: camera unlocked");
cameraLocked = false;
}
}
});
}
}
解决方案
好吧。我解决了。
我将 setOnCameraIdleListener 更改为 onCameraMove,这更有意义。
这样,每次相机移动时,检查相机是否在设备顶部。
然后,内部的 onCameraMove 需要考虑一些错误,因为它们会传回小数点值。
推荐阅读
- php - 如何在 HTML 选择列表中检索选项项的属性?
- reactjs - 无法在 makeStyle 中使用“this”
- android - 如何在颤动中读取 JSON 数组/映射中的单个值?
- reactjs - 使用 React Hooks 时如何避免两次获取数据
- angular - 如何使用formControlName angular将base64值发送到rest api?
- javascript - 如何修复无法读取属性属性“大小”未定义
- mysql - 使用 SQL 对两个表中的两列求和
- mongodb - 如何从 mongoDB 的部分索引中查找所有文档?
- android - 找不到符号的列表视图实例错误
- std - Clion 无法加载外部库