按缩放比例调整地图标记,安卓

8

我在地图上有很多标记。缩放每个标记可以显示其位置,但是当缩小地图时,标记会重叠在一起,更难确定标记的位置。

有没有一种方法根据缩放比例调整标记图像的大小?

3个回答

6

这取决于你如何绘制你的标记。如果你的标记只是一个位图/可绘制对象,那么只需使用matrix.postScale()即可。

Matrix matrix = new Matrix();
matrix.postScale(2f, 2f); // douple the size
canvas.drawBitmap(mBitmap, matrix, mPaint);

你能提供一个更详细的方法来完成这个吗? - ferguior
@ferguior:您需要什么?绘制缩放图像的问题已在我的编辑帖子中得到回答... - WarrenFaith
2
我的疑问更多地是关于如何处理缩放,何时进行以及如何测量,以便我可以应用正确的比例尺。此外,您发布的这段代码将放在哪个类中?在地图视图中,还是在覆盖物项中,还是在项目化项中? - ferguior
@ferguior:缩放计算可能有些棘手,我认为你只需要尝试一下找到一个好的缩放因子。我发布的代码应该在你绘制标记/覆盖物的地方实现。简短的检查表明,你可以在ItemizedOverlay中使用draw()方法。 - WarrenFaith

3

标记不会根据缩放级别改变大小。如果您想要这种效果,请使用GroundOverlays。来源

 GoogleMap map = ...; // get a map.
 BitmapDescriptor image = ...; // get an image.
 LatLngBounds bounds = ...; // get a bounds
 // Adds a ground overlay with 50% transparency.
 GroundOverlay groundOverlay = map.addGroundOverlay(new GroundOverlayOptions()
     .image(image)
     .positionFromBounds(bounds)
     .transparency(0.5));

地面覆盖是一种固定于地图上并随着地图缩放而缩放的图像。更多信息请参见API


但是这样你必须计算地面叠加层的边界,而不是提供一个位置。这使它成为一个不太理想的解决方案。 - Andrew S

1
一个简单的表单是。
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.raw.ic_car_1);
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap); 
        googleMap.addGroundOverlay(new GroundOverlayOptions()
             .image(bitmapDescriptor)
             .position(latLng,100));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接