【发布时间】:2011-08-01 11:29:28
【问题描述】:
我有一个纬度和经度(GeoPoint),它是地图的中心。 我想将缩放级别设置为距我拥有的纬度和经度 4 英里的距离。
提前致谢,
【问题讨论】:
标签: android google-maps-api-3 android-mapview
我有一个纬度和经度(GeoPoint),它是地图的中心。 我想将缩放级别设置为距我拥有的纬度和经度 4 英里的距离。
提前致谢,
【问题讨论】:
标签: android google-maps-api-3 android-mapview
使用地图的.setZoom(int); 参数。我认为它在 15 左右:
所以myMap.setZoom(15);
【讨论】:
您可以使用 setzoom() 函数来执行此操作。下面的代码可以在this example找到。
mc = mapView.getController();
String coordinates[] = {"1.352566007", "103.78921587"};
double lat = Double.parseDouble(coordinates[0]);
double lng = Double.parseDouble(coordinates[1]);
p = new GeoPoint(
(int) (lat * 1E6),
(int) (lng * 1E6));
mc.animateTo(p);
mc.setZoom(17);
【讨论】:
已解决:
来自 Androd 谷歌 API: zoomlevel 设置地图的缩放级别。该值将被限制在 1 到 21 之间(含),但并非所有区域都具有较高缩放级别的图块。这只是直接设置缩放级别; 参数: zoomLevel - 在 zoomLevel 1 时,地球的赤道是 256 像素长。每个连续的缩放级别都会放大 2 倍。 回报: 新的缩放级别,介于 1 和 21 之间。
所以 给定赤道 E = 40075 Km 或 21.638,8 英里 给定缩放距离 D = 20 公里或英里
缩放级别:L = log2(E/D)+1
这是我用过的简单方法 如果要使用里程记得设置 E= 21.638,8...
public static byte zoomLevel (double distance){
byte zoom=1;
double E = 40075;
Log.i("Astrology", "result: "+ (Math.log(E/distance)/Math.log(2)+1));
zoom = (byte) Math.round(Math.log(E/distance)/Math.log(2)+1);
// to avoid exeptions
if (zoom>21) zoom=21;
if (zoom<1) zoom =1;
return zoom;
}
【讨论】: