我有一个谷歌地图,当用户在蓝点(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:上检查"contains"来解决
if (!map.getProjection().getVisibleRegion().latLngBounds.contains(locationToLatLng(lastKnownLocation))) {
map.moveCamera(CameraUpdateFactory.newCameraPosition(getCameraPositionFromLocationWithZoom(lastKnown, getCurrentZoom())));
}