【问题标题】:Android Google maps API V2 center markersAndroid 谷歌地图 API V2 中心标记
【发布时间】:2013-07-12 11:27:48
【问题描述】:

有没有办法让地图尽可能放大,但同时保持屏幕上的所有标记。 我有六个形状不统一的标记。我正在考虑只取他们的中心并将地图定位到那里,但我仍然不知道我可以通过编程将地图放大多远。

每次创建地图时,这些标记都会改变位置。理想情况下,我会有一个放大地图的脚本,因此所有内容都包含在视图中。

所以你明白了。我在循环中使用以下行从 json 一次创建一个标记。

mMap.addMarker(new MarkerOptions().position(new LatLng(lat,lng)).title(c.getString("title")));

【问题讨论】:

    标签: java android google-maps


    【解决方案1】:

    您应该使用 CameraUpdate 类来执行(可能)所有程序化地图移动。

    为此,首先计算所有标记的边界,如下所示:

    LatLngBounds.Builder builder = new LatLngBounds.Builder();
    for each (Marker m : markers) {
        builder.include(m.getPosition());
    }
    
    LatLngBounds bounds = builder.build();
    

    然后使用工厂获取一个运动描述对象:CameraUpdateFactory:

    int padding = 0; // offset from edges of the map in pixels
    CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
    

    最后移动地图:

    googleMap.moveCamera(cu);
    

    或者如果你想要一个动画:

    googleMap.animateCamera(cu);
    

    *来自另一个帖子:Android map v2 zoom to show all the markers

    【讨论】:

    • 能否请您链接到您从中获得的原始帖子以获得更多上下文。
    • 这就是全部。无论如何,这就是它。 stackoverflow.com/a/14828739/1837759
    • 谢谢。尽管 foreach (Marker m : markers) { How do I get the markers?
    • 你也可以不用它,只需使用你的标记对象来做。 builder.include(m.getPosition());这里 m 是标记对象。
    【解决方案2】:

    【讨论】:

    • 这是最好的更新到最新版本,你永远不知道谷歌什么时候会删除整个包:​​p
    猜你喜欢
    • 2012-11-29
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多