Javascript 谷歌地图在标记周围获得边界框

Javascript 谷歌地图在标记周围获得边界框,javascript,google-maps-api-2,Javascript,Google Maps Api 2,在GoogleMapsAPIv2中,我在地图上有一个标记,我需要计算这个标记周围的边界框。我怎样才能得到一个以这个标记为中心的5乘5公里长的粘接盒呢?不是您需要的真正的粘接盒,但请查看本文 不是您所需要的真实版本,但请查看本文 我不确定谷歌地图是否提供了这样的功能,但数学可以帮助你生存;)是使用地理数据进行不同计算的重要参考。打开该页面,转到“给定距离和方向角的终点”部分,这里有公式和在线计算器,您可以检查它们(以及您可以在地图上看到的点)。公式中的参数很少: (lat1,lng1) - you

在GoogleMapsAPIv2中,我在地图上有一个标记,我需要计算这个标记周围的边界框。我怎样才能得到一个以这个标记为中心的5乘5公里长的粘接盒呢?

不是您需要的真正的粘接盒,但请查看本文


不是您所需要的真实版本,但请查看本文


我不确定谷歌地图是否提供了这样的功能,但数学可以帮助你生存;)是使用地理数据进行不同计算的重要参考。打开该页面,转到“给定距离和方向角的终点”部分,这里有公式和在线计算器,您可以检查它们(以及您可以在地图上看到的点)。公式中的参数很少:

(lat1,lng1) - your point (marker coordinates)
d - distance (in your case it would be 2.5km)
brng - angle.. 
要找到边界,您需要找到南、北、东和西矩形边的坐标,所以您将在参数中更改的所有内容都是角度,在您的情况下,它将是0、90、180和270度。公式:

var lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) + 
                      Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) );
var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1), 
                             Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
如果指定角度=0,则可以找到北、东、南、西(角度应以弧度传递)

附加组件:只需查看该页面的源代码,因为当我在在线表单中输入轴承=0,距离=2时,我会看到带有两点的地图,根据地图比例,它们之间的距离实际上是2km。好的,你可以在一个简单的许可证下使用这个库,没有任何明示或暗示的保证,只需包括它

<script src="http://www.movable-type.co.uk/scripts/latlon.js"></script>
当我以在线形式输入bearing=0,distance=2时,这个方法是用参数
latLonCalc.destinationPoint(0,2“)执行的

试试看,否则给我输入参数,这样我就可以检查出什么问题了

更新2该库使用梯度,并将其转换为弧度进行计算,然后返回到梯度。刚刚做了一个简单的测试:

var latLonCalc = new  new LatLon( 25, 45 );
var point = latLonCalc.destinationPoint( 0, "2" );
console.info( point );
// prints 25°01′05″N, 045°00′00″E { _lat=25.01798643211838, _lon=45.00000000000005, _radius=6371}
因此,入口点和最终目的地之间的距离略大于1分钟

earth = 2 * PI * 6371; // 40 009.98km
=> 40 009.98km / 360grad =~111.14
=> 111,14 / 60 = 1.85 (km/minute) ~2km

这是一个圆形计算,它告诉我终点离入口点不远,距离应该是2公里;)

我不确定谷歌地图是否提供了这样的功能,但数学可以帮助你生存;)是使用地理数据进行不同计算的重要参考。打开该页面,转到“给定距离和方向角的终点”部分,这里有公式和在线计算器,您可以检查它们(以及您可以在地图上看到的点)。公式中的参数很少:

(lat1,lng1) - your point (marker coordinates)
d - distance (in your case it would be 2.5km)
brng - angle.. 
要找到边界,您需要找到南、北、东和西矩形边的坐标,所以您将在参数中更改的所有内容都是角度,在您的情况下,它将是0、90、180和270度。公式:

var lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) + 
                      Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) );
var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1), 
                             Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
如果指定角度=0,则可以找到北、东、南、西(角度应以弧度传递)

附加组件:只需查看该页面的源代码,因为当我在在线表单中输入轴承=0,距离=2时,我会看到带有两点的地图,根据地图比例,它们之间的距离实际上是2km。好的,你可以在一个简单的许可证下使用这个库,没有任何明示或暗示的保证,只需包括它

<script src="http://www.movable-type.co.uk/scripts/latlon.js"></script>
当我以在线形式输入bearing=0,distance=2时,这个方法是用参数
latLonCalc.destinationPoint(0,2“)执行的

试试看,否则给我输入参数,这样我就可以检查出什么问题了

更新2该库使用梯度,并将其转换为弧度进行计算,然后返回到梯度。刚刚做了一个简单的测试:

var latLonCalc = new  new LatLon( 25, 45 );
var point = latLonCalc.destinationPoint( 0, "2" );
console.info( point );
// prints 25°01′05″N, 045°00′00″E { _lat=25.01798643211838, _lon=45.00000000000005, _radius=6371}
因此,入口点和最终目的地之间的距离略大于1分钟

earth = 2 * PI * 6371; // 40 009.98km
=> 40 009.98km / 360grad =~111.14
=> 111,14 / 60 = 1.85 (km/minute) ~2km

这是一个圆形计算,它告诉我终点离入口点不远,距离应该是2公里;)

如果我使用上面的公式,brng=0,距离=2,你确定这是100%正确的吗?如果我使用上面的公式,brng=0,距离=2,你确定这是100%正确的吗