【问题标题】:Android: how to check if myLocation is visible on the map at the current zoom level?Android:如何检查 myLocation 在当前缩放级别下是否在地图上可见?
【发布时间】:2016-03-26 04:30:57
【问题描述】:
我有一个谷歌地图,当用户在蓝点周围移动时 (myLocation) 移动 - 标准行为。在用户超出当前缩放级别的范围之前,此方法效果很好 - 并且蓝点从地图的边缘之一消失。我不想每次用户移动时都重新调整地图的焦点并且我得到了位置更新 - myLocation 点不必始终位于屏幕的中心 - 但 myLocation 有必要总是可见的,所以如果用户离开地图的一侧,我想重新调整地图的焦点,以便他再次可见。
如何判断 myLocation 已移出屏幕的可见区域?
【问题讨论】:
标签:
java
android
google-maps
android-mapview
mylocationoverlay
【解决方案1】:
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));
}
【解决方案2】:
通过获取地图的当前边界然后检查最后一个已知纬度上的“包含”来解决:
if (!map.getProjection().getVisibleRegion().latLngBounds.contains(locationToLatLng(lastKnownLocation))) {
map.moveCamera(CameraUpdateFactory.newCameraPosition(getCameraPositionFromLocationWithZoom(lastKnown, getCurrentZoom())));
}