我有一个谷歌地图,当用户在蓝点周围移动时(myLocation)移动 - 标准行为。这在用户超出当前缩放级别的范围之前效果很好 - 并且蓝点从地图的边缘之一消失。我不想每次用户移动时都重新调整地图的焦点并且我得到了位置更新 - myLocation 点不必始终位于屏幕的中心 - 但 myLocation 有必要总是可见的,所以如果用户离开地图的一侧,我想重新调整地图的焦点,以便他再次可见。
如何判断 myLocation 已移出屏幕的可见区域?
我有一个谷歌地图,当用户在蓝点周围移动时(myLocation)移动 - 标准行为。这在用户超出当前缩放级别的范围之前效果很好 - 并且蓝点从地图的边缘之一消失。我不想每次用户移动时都重新调整地图的焦点并且我得到了位置更新 - myLocation 点不必始终位于屏幕的中心 - 但 myLocation 有必要总是可见的,所以如果用户离开地图的一侧,我想重新调整地图的焦点,以便他再次可见。
如何判断 myLocation 已移出屏幕的可见区域?
double latitude = location.getLatitude();
double longitude = location.getLongitude();
fromPosition = new LatLng(latitude, longitude);
LatLngBounds bounds = this.map.getProjection().getVisibleRegion().latLngBounds;
if(!bounds.contains(new LatLng(location.getLatitude(), location.getLongitude()))){
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(fromPosition)
.zoom(17)
.bearing(180)
.tilt(80)
.build();
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
通过获取地图的当前边界然后检查最后一个已知 latlng 的“包含”来解决:
if (!map.getProjection().getVisibleRegion().latLngBounds.contains(locationToLatLng(lastKnownLocation))) {
map.moveCamera(CameraUpdateFactory.newCameraPosition(getCameraPositionFromLocationWithZoom(lastKnown, getCurrentZoom())));
}