【问题标题】:Display GroundOverlay only when building is entirely within cameraView仅当建筑物完全在 cameraView 内时才显示 GroundOverlay
【发布时间】:2020-03-16 20:19:29
【问题描述】:

如标题所述,本质上我只想在相机处于整个建筑物的视野中时显示 GroundOverlay。我将如何在 onCameraMove() 方法中完成此操作?到目前为止,即使建筑物的部分在摄像机视图内,也会显示叠加层。

@Override
    public void onCameraMove(){
        LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds;
        private static final LatLng Building1 = new LatLng(54.69726685890506,-2.7379201682812226);

        if(mMap.getCameraPosition().zoom > 17){
            if (bounds.contains(Building1)) {
                  displayOverlay(); 
            }
         }

【问题讨论】:

    标签: java android google-maps


    【解决方案1】:

    看来Building1应该是建筑物边界点的列表,你应该在循环中检查它们都包含在bounds中:

    ...
    List<LatLng> buildingPoints = new ArrayList<>();
    buildingPoints.add(new LatLng(...,...))
    buildingPoints.add(new LatLng(...,...))
    ...
    
    ...
    if(mMap.getCameraPosition().zoom > 17){
        boolean allPointsVisible = true;
        for (LatLng currBuildingPoint: buildingPoints) {
            if (!bounds.contains(currBuildingPoint)) {
                allPointsVisible = false;
                break;
            }
        }
        if (allPointsVisible) {
            displayOverlay();
        }
     }
     ...
    

    【讨论】:

    • 太棒了!如果您有多个建筑物,您将如何做同样的事情?因此,例如,building1 和 building2,您会希望根据哪一个进入您的相机视图,为每一个显示特定的叠加层。
    • @dantheman 只需为所有建筑物循环重复代码片段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    相关资源
    最近更新 更多