(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.northeast
和bounds.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.northeast
和bounds.southwest
。以上是关于(Android) 使用地图标记创建边界框并在 Google Map V2 中获取其宽度的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 中步行/驾驶时更新位置标记并在 Google 地图上绘制路径