Android:如何检查myLocation是否在当前缩放级别的地图上可见?

时间:2015-12-19 16:42:44

标签: java android google-maps android-mapview mylocationoverlay

我有一张谷歌地图,当用户围绕蓝点移动时(myLocation)移动 - 标准行为。这种方法很有效,直到用户移动到当前缩放级别的范围之外 - 蓝色点从地图的一个边缘消失。我不希望每次用户移动时重新聚焦地图并且我得到位置更新 - myLocation点始终位于屏幕中心是不必要的 - 但这是必要的因为myLocation始终是可见的,所以如果用户离开地图的一侧,我想重新聚焦地图,以便他再次可见。

如何判断myLocation已移出屏幕的可见区域?

2 个答案:

答案 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())));
            }