当前位置: 首页 > 知识库问答 >
问题:

在android中调整google map(api v2)缩放级别

司空宗清
2023-03-14

我正在我的应用程序中使用map api v2。我必须在地图上显示我的当前位置和目标位置,以便这两个位置在屏幕上可见(以最大可能的缩放级别)。这是我到目前为止尝试过的...

googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.mapFragment)).getMap();

 if(googleMap != null){

        googleMap.setMyLocationEnabled(true);
        LatLng targetLocationLatLng = new LatLng(modelObject.getLattitude(), modelObject.getLongitude());
        LatLng currentLocationLatLng = new LatLng(this.currentLocationLattitude, this.currentLocationLongitude);
        googleMap.addMarker(new MarkerOptions().position(targetLocationLatLng).title(modelObject.getLocationName()).icon(BitmapDescriptorFactory.fromResource(R.drawable.location_icon)));
        LatLngBounds bounds = new LatLngBounds(currentLocationLatLng, targetLocationLatLng);
        googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 3));

    }

由于以下原因,应用程序强制关闭:java.lang.IllegalStateException:Map大小不应为0。很可能,地图视图尚未出现布局

如何获得最大可能的缩放级别?请帮帮我。

共有2个答案

施振海
2023-03-14

避免此问题的一个好方法是对包含map片段和侦听器的布局使用ViewTreeWatch,以确保布局已首先使用addOnGlobalLayoutListener初始化(并且宽度不=0),如下所示:

  private void zoomMapToLatLngBounds(final LinearLayout layout,final GoogleMap mMap, final LatLngBounds bounds){

    ViewTreeObserver vto = layout.getViewTreeObserver(); 
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
        @SuppressWarnings("deprecation")
        @Override 
        public void onGlobalLayout() { 
          layout.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
          mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds,OVERVIEW_MAP_PADDING));
        } 
    });

}
宗政坚白
2023-03-14

在我的项目中,我使用com.google.android.gms.maps.model.LatLngBound。Builder

根据您的源代码进行调整,它应该如下所示:

Builder boundsBuilder = new LatLngBounds.Builder();
boundsBuilder.include(currentLocationLatLng);
boundsBuilder.include(targetLocationLatLng);
// pan to see all markers on map:
LatLngBounds bounds = boundsBuilder.build();
googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 3));
 类似资料:
  • 我正在使用GWT2.5和GoogleMap Api3。 我有两种情况:1.我有地图的中心,上面有几个标记。2.任何一个县,上面有几个标记。 因此,地图应该适当缩放以适应标记。 有没有办法自动检测缩放级别?

  • 问题内容: 我想拍摄一张图像并更改图像的比例,虽然它是一个numpy数组。 例如,我有一个可口可乐瓶的图像: bottle-1 转换为一个numpy的形状数组,我想调整其大小以表示第二个图像的大小: bottle-2 形状为。 如何在保持原始图像的同时将图像尺寸更改为特定形状?其他答案建议每隔一行或第三行剥离,但是我想要做的基本上是像通过图像编辑器(但在python代码中)那样收缩图像。是否有任何

  • 我目前正在使用谷歌地图android API v2开发应用程序。我的代码如下。假设地图有几个标记并放大以显示所有标记。 这段代码工作正常,但我想在缩放级别达到17.0f时停止制作动画;地图API似乎没有这样的方法来控制缩放级别。有人知道解决这个问题的办法吗?

  • 我正在使用壁画在列表视图中显示图像。不过,我有个问题。 当我使用CENTER_CROP等保持纵横比的方法缩放图像时,缩放的图像高度变得小于SimpleDraWeeView的高度,SimpleDraWeeView不会自动调整大小以匹配缩放图像的大小。 > 我尝试使用,但它不起作用。 我也尝试了下面的方法,但是scaleY(我想用来计算缩放高度)返回1,即使图像高度小于Simpe-Dravee-Vie

  • 我使用传单允许在地图上绘制自定义SVG路径(多边形)。问题是,当用户缩小时,多边形变得太大,并模糊了地图的其余部分。 我在网上查找了一些例子,我遇到的资源使用了D3.geo库中的geo函数。而在我的用例中,我在地图上使用d3、传单和一个SVG层。 有没有一个公式,我可以适用于调整对象的大小正确?我知道我将不得不应用一个翻译功能,这将基于宽度,高度和当前缩放级别,但我想知道是否有一个标准的方法来做到

  • 有可能用新的Google Maps API V2更改myLocation的缩放级别吗? 如果您设置了,您就会在地图上找到一个按钮来查找您的位置。 如果你点击它,那么地图就会把你带到你的位置,并把它放大到某个级别。我可以把这个缩放变小还是变大?