我想在Google Maps
的地图上绘制一个静态圆圈。当用户捏住时,地图将放大/缩小。
我需要知道地图半径(与圆圈中包含的区域相关)并相应地更改底部的搜索条。
是否有人知道如何检索从左侧到右侧屏幕边缘的距离?我在Google Maps API doc找不到任何内容。
这样的事情:
答案 0 :(得分:41)
使用VisibleRegion,您可以获得所有角落的坐标以及中心。
VisibleRegion vr = mMap.getProjection().getVisibleRegion();
double left = vr.latLngBounds.southwest.longitude;
double top = vr.latLngBounds.northeast.latitude;
double right = vr.latLngBounds.northeast.longitude;
double bottom = vr.latLngBounds.southwest.latitude;
你可以通过这个来计算两个地区的距离
Location MiddleLeftCornerLocation;//(center's latitude,vr.latLngBounds.southwest.longitude)
Location center=new Location("center");
center.setLatitude( vr.latLngBounds.getCenter().latitude);
center.setLongitude( vr.latLngBounds.getCenter().longitude);
float dis = center.distanceTo(MiddleLeftCornerLocation);//calculate distane between middleLeftcorner and center
答案 1 :(得分:12)
我有一段时间在@Md给出的最佳答案中编写“MiddleLeftCornerLocation”变量的代码。 Monsur Hossain Tonmoy,所以只是为了完成它(我没有足够的声誉点评论你的答案,对不起):
function searchMarkers()
{
var i;
var mini = document.getElementById("minValue").value;
var maxi = document.getElementById("maxValue").value;
for (i = 0; i < markers.length; i++) {
if (mini < markers[i].weight && markers[i].weight < maxi) {
markers[i].setVisible(true);
}
else {
markers[i].setVisible(false);
}
}
}
答案 2 :(得分:2)
首先使用
获取地图中心点googleMap.getCameraPosition().target;
然后计算出地图的宽度并获得高度/ 2并使用您刚刚获得的Point
x
值将其转换为y
。
然后将该点与地图相关联
LatLng widthPoint = map.getProjection().fromScreenLocation(point);
现在您有了tagret点和宽度点,您可以计算出两个点之间的距离,这将为您提供半径。
注意强>
这假设始终处于纵向模式,如果您处于横向模式,圆圈将大于可见区域,因此在这种情况下,您将希望获得距离高度的距离