Java 向MapViewController.zoomToSpan()添加填充

Java 向MapViewController.zoomToSpan()添加填充,java,android,google-maps,Java,Android,Google Maps,我有一个MapView,我在上面调用getController().zoomToSpan()。zoomToSpan()的问题是,我希望在贴图管脚之外有一个一致的(例如15dp)填充,这样就可以选择它们,而不需要用户收缩来缩小。目前,我正在使用贴图管脚的最小/最大长度/纬度填充zoomToSpan(),因此边缘上的管脚不会立即可见或可选择 我考虑过使用固定的长/宽填充,但我不能保证贴图引脚不会彼此太近或太远。因此,尽管固定的长/宽填充可能适用于大多数情况,但并不适用于所有情况 这是我当前设置zoo

我有一个MapView,我在上面调用getController().zoomToSpan()。zoomToSpan()的问题是,我希望在贴图管脚之外有一个一致的(例如15dp)填充,这样就可以选择它们,而不需要用户收缩来缩小。目前,我正在使用贴图管脚的最小/最大长度/纬度填充zoomToSpan(),因此边缘上的管脚不会立即可见或可选择

我考虑过使用固定的长/宽填充,但我不能保证贴图引脚不会彼此太近或太远。因此,尽管固定的长/宽填充可能适用于大多数情况,但并不适用于所有情况

这是我当前设置zoomToPan()的方式:

这是我关于如何设置它的想法,但我不确定它是否真的解决了问题,或者是否有更好的方法:

mapView.getController().zoomToSpan(MapPoint.convertToGeoPoint((float) (Math.abs(fMinLat-fMaxLat) + (Math.abs(fMaxLat - fMaxLat)) * 0.5)), MapPoint.convertToGeoPoint((float) (Math.abs(fMinLong-fMaxLong) + (Math.abs(fMinLong - fMaxLong) * 0.5))));

我已经检查了这些问题,但我已经过了让它起作用的阶段;我只想把它打磨一下:,而且。

您的解决方案应该可以正常工作。请注意,在“(Math.abs(fMaxLat-fMaxLat))*0.5”中有一个输入错误。您正在使用两次“fMaxLat”

您可以用更简单的形式编写:

mapView.getController().zoomToSpan((int)(Math.abs(fMinLat-fMaxLat) * 1.5), (int)(Math.abs(fMinLong-fMaxLong) * 1.5));
然后,您可以尝试在1.0和1.99之间使用不同的乘法值,看看有什么更好地实现您的期望

还要记住,缩放总是以2次方的步长(不是渐进的)变化,这意味着它将使缩放倍增或减少到一半。最终获得的结果将因地图中的不同点而异,这些点可以与缩放值非常接近,并且与上一个点的边缘非常远离

mapView.getController().zoomToSpan((int)(Math.abs(fMinLat-fMaxLat) * 1.5), (int)(Math.abs(fMinLong-fMaxLong) * 1.5));