【问题标题】:Android (MapView): How to set Zoom level of 4 miles in the mapview?Android(地图视图):如何在地图视图中设置 4 英里的缩放级别?
【发布时间】:2011-08-01 11:29:28
【问题描述】:

我有一个纬度和经度(GeoPoint),它是地图的中心。 我想将缩放级别设置为距我拥有的纬度和经度 4 英里的距离。

提前致谢,

【问题讨论】:

    标签: android google-maps-api-3 android-mapview


    【解决方案1】:

    使用地图的.setZoom(int); 参数。我认为它在 15 左右:

    所以myMap.setZoom(15);

    【讨论】:

    • 我想根据特定区域动态设置缩放级别。那可能吗?我不想硬编码“15”
    • 创建一个具有区域/缩放级别的数据库并从中读取 :-) 您可以使用 SQlite 数据库来存储数据。
    • MapView 没有 setZoom 方法。 MapController 可以。
    【解决方案2】:

    您可以使用 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); 
    

    【讨论】:

    • 谷歌地图上有没有关于缩放级别和距离的文档。
    • 我在您的另一条评论中看到,您说要根据某些区域动态设置它。你能更具体一点吗?如果我理解正确,您可以获得地图的坐标并使用开关块来设置缩放级别。在某些时候,您无论如何都必须映射缩放级别和区域。
    • 你怎么说4英里的距离对应17的缩放级别?
    • 17 只是一个随机值。我仍然完全确定你的意思,但我认为这个链接可以帮助 groups.google.com/group/google-maps-js-api-v3/browse_thread/… 。这不是您直接需要的,但它会帮助您到达那里。此外,这里是 Google 地图的链接及其缩放级别之间的比例:michal.guerquin.com/googlemaps.html
    • 这并没有回答将里程与缩放级别相关联的问题,并且链接讨论了谷歌地图所需的像素/存储量,与用户的问题无关。
    【解决方案3】:

    已解决:

    来自 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;
    }
    

    【讨论】:

    • 这个答案不考虑地图视图的大小。在更大的屏幕上,您可以在相同的缩放级别上看到更多的地形。例如,对于 512 像素的宽度,您需要缩放级别 2 以显示整个地球,对于 1024(在平板电脑上) - 缩放级别 3,等等。
    猜你喜欢
    • 1970-01-01
    • 2018-07-05
    • 2011-08-25
    • 2011-06-28
    • 2011-08-23
    • 1970-01-01
    • 2021-04-18
    • 2012-07-12
    相关资源
    最近更新 更多