我有一张谷歌地图,当用户围绕蓝点移动时(myLocation)移动 - 标准行为。这种方法很有效,直到用户移动到当前缩放级别的范围之外 - 蓝色点从地图的一个边缘消失。我不希望每次用户移动时重新聚焦地图并且我得到位置更新 - myLocation点始终位于屏幕中心是不必要的 - 但这是必要的因为myLocation始终是可见的,所以如果用户离开地图的一侧,我想重新聚焦地图,以便他再次可见。
如何判断myLocation已移出屏幕的可见区域?
答案 0 :(得分:4)
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));
}
答案 1 :(得分:0)
解决方法是获取地图的当前边界,然后检查"包含"在最后一个已知的latlng:
if (!map.getProjection().getVisibleRegion().latLngBounds.contains(locationToLatLng(lastKnownLocation))) {
map.moveCamera(CameraUpdateFactory.newCameraPosition(getCameraPositionFromLocationWithZoom(lastKnown, getCurrentZoom())));
}