【问题标题】:How to dynamically zoom google map based on the markers count?如何根据标记数动态缩放谷歌地图?
【发布时间】:2019-08-21 22:47:05
【问题描述】:

我最初为谷歌地图设置了缩放级别,我想根据边界中存在的标记数量动态更改缩放级别。如果初始地图缩放中没有标记,我无法通过更改地图边界来动态更改缩放。

如果边界中没有标记,我将在边界中添加新标记并为相机设置动画以合并新边界,但实际上它正在做的是将地图中心更改为新位置而不是我当前的位置地点。我不想更改当前位置,我只想缩小地图以包含这些标记。

if(noMarkersInBound){
    LatLngBounds.Builder builder = new LatLngBounds.Builder();
    builder.include(new LatLng(28.5795431, 77.317322));
    builder.include(new LatLng(28.5805431, 77.328322));
    LatLngBounds bounds = builder.build();
    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds,0);
}

此方法CameraUpdateFactory.newLatLngBounds 将当前位置更改为该边界,而不是缩小地图。

谁能帮助或告诉我实现这一目标的方法。

【问题讨论】:

    标签: android google-maps-markers google-maps-android-api-2


    【解决方案1】:

    我不确定我是否理解正确,但如果您只想设置缩放级别,那就这样做吧:

    public static CameraUpdate zoomTo (float zoom) 返回一个CameraUpdate 将相机视点移动到特定的缩放级别。

    参数 zoom 所需的缩放级别,范围为 2.0 到 21.0。 低于此范围的值设置为 2.0,高于此范围的值设置为 21.0。增大该值以放大。并非所有区域都具有最大缩放级别的图块。

    https://developers.google.com/android/reference/com/google/android/gms/maps/CameraUpdateFactory#zoomTo(float)

    public void moveCamera (CameraUpdate update) 重新定位相机 根据更新中定义的说明。此举是 瞬时,随后的 getCameraPosition() 将反映 新的位置。有关一组更新,请参阅 CameraUpdateFactory。

    参数更新应该应用于相机的更改。

    https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#moveCamera(com.google.android.gms.maps.CameraUpdate)

    【讨论】:

    • 我希望根据标记的数量计算缩放级别。如何动态计算?如果边界内没有标记,地图应缩小到特定值。
    • 您想根据标记的数量设置缩放级别,还是设置为显示所有标记?我的回答显示了如何缩放到特定级别。
    猜你喜欢
    • 2017-10-14
    • 2020-05-07
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    相关资源
    最近更新 更多