我有一个以P点为中心的MapView。用户无法更改MapView中心,但他可以选择围绕P点显示圆的半径,并在每次更改时重新绘制地图时动态更改显示新的圈子。 问题是,我希望地图可以根据需要放大或缩小,以便在可视区域显示整个圆圈。我试过这个:
Projection proj = m_Map.getProjection();
Point mapCenterPixles = new Point();
proj.toMapPixels(center, mapCenterPixles);
float radiusPixels = proj.metersToEquatorPixels(newRadius);
IGeoPoint topLeft = proj.fromPixels(mapCenterPixles.x - radiusPixels,
mapCenterPixles.y - radiusPixels);
IGeoPoint bottomRight = proj.fromPixels(mapCenterPixles.x
+ radiusPixels, mapCenterPixles.y + radiusPixels);
m_Map.getController().zoomToSpan(
topLeft.getLatitudeE6() - bottomRight.getLatitudeE6(),
topLeft.getLongitudeE6() - bottomRight.getLongitudeE6());
但似乎我错过了一些东西,因为传递给zoomToSpan()的值不会导致chnage,我有点迷失在这里,有人可以请一些关于如何缩放地图以跨越边界框的灯光给出半径为米的圆圈及其中心点?
答案 0 :(得分:0)
Google地图缩放级别定义为2的幂,因此MapController#zoomToSpan()
也会以2的幂来缩放。
因为,如果您在上面计算的范围已经在当前缩放级别内显示,那么在您需要转到下一个更大或更小的缩放级别之前,可能在地图中没有任何实际可见的变化。
的文档中略微模糊地描述了这种行为