(Android) 使用地图标记创建边界框并在 Google Map V2 中获取其宽度

Posted

技术标签:

【中文标题】(Android) 使用地图标记创建边界框并在 Google Map V2 中获取其宽度【英文标题】:(Android) Create bounding box with map markers and get width of it in Google Map V2 【发布时间】:2021-02-14 03:18:26 【问题描述】:

我正在使用以下代码在 android 中的 GoogleMap 上缩放和显示所有标记。效果很好:

LatLngBounds.Builder builder = new LatLngBounds.Builder();

//the include method will calculate the min and max bound.
builder.include(marker1.getPosition());
builder.include(marker2.getPosition());
builder.include(marker3.getPosition());
builder.include(marker4.getPosition());

LatLngBounds bounds = builder.build();

int width = getResources().getDisplayMetrics().widthPixels;
int height = getResources().getDisplayMetrics().heightPixels;
int padding = (int) (width * 0.10); // offset from edges of the map 10% of screen

CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding);

mMap.animateCamera(cu);

但我想要做的是映射边界框中的所有标记,然后获取该框的宽度。我该怎么做?

【问题讨论】:

【参考方案1】:

你需要使用bounds.northeastbounds.southwest坐标

并使用Location.distanceBetween() 方法或any other 查找它们之间的距离:

float[] results = new float[1];
Location.distanceBetween(bounds.northeast.latitude, bounds.southwest.longitude,
            bounds.northeast.latitude, bounds.northeast.longitude,
            results);
float width_in_meters = results[0];

【讨论】:

@Speedy 在您的代码示例中:builder.include(marker1.getPosition());... 然后是LatLngBounds bounds = builder.build();,您可以使用bounds.northeastbounds.southwest

以上是关于(Android) 使用地图标记创建边界框并在 Google Map V2 中获取其宽度的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中步行/驾驶时更新位置标记并在 Google 地图上绘制路径

Google Maps Android 如何显示指示边界外附近标记的箭头?

从 markerClusterer 中删除标记

Google Maps API 重绘地理编码界限

Oracle Apex 中的反向地理编码(来自可拖动标记)

从 web api 加载谷歌地图所需的标记,并在相机移动时动态加载其他标记