从Google地图的可见部分检索距离

时间:2013-12-06 11:26:21

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

我想在Google Maps的地图上绘制一个静态圆圈。当用户捏住时,地图将放大/缩小。

我需要知道地图半径(与圆圈中包含的区域相关)并相应地更改底部的搜索条。

是否有人知道如何检索从左侧到右侧屏幕边缘的距离?我在Google Maps API doc找不到任何内容。

这样的事情:

enter image description here

3 个答案:

答案 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 

enter image description here

答案 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点和宽度点,您可以计算出两个点之间的距离,这将为您提供半径。

注意

这假设始终处于纵向模式,如果您处于横向模式,圆圈将大于可见区域,因此在这种情况下,您将希望获得距离高度的距离