Javascript 在给定一个点和一个距离的情况下计算地图上的一个点
我正在与谷歌地图合作一个角度项目。我有一个圆心和半径的长度,单位是米。我试图找到圆周上任意点的坐标,我只需要一个。考虑到我所拥有的,我该如何计算 示例数据:Javascript 在给定一个点和一个距离的情况下计算地图上的一个点,javascript,google-maps,math,Javascript,Google Maps,Math,我正在与谷歌地图合作一个角度项目。我有一个圆心和半径的长度,单位是米。我试图找到圆周上任意点的坐标,我只需要一个。考虑到我所拥有的,我该如何计算 示例数据: Center = { Latitude : 53.388922117675236 Longitude : -6.280994415283203 } Radius = 527 如果需要给定距离的任意点,最简单的方法是选择子午方向 NewLong = Long NewLat = Lat +- Radius / 111111.111
Center = {
Latitude : 53.388922117675236
Longitude : -6.280994415283203
}
Radius = 527
如果需要给定距离的任意点,最简单的方法是选择子午方向
NewLong = Long
NewLat = Lat +- Radius / 111111.111 (meters per degree)
或平行方向:
NewLat = Lat
NewLong = Long +- Radius / 111111.111 / Cos(Lat)
对于随机方向,生成随机方向角并使用公式
如果需要给定距离的任意点,最简单的方法是选择子午方向
NewLong = Long
NewLat = Lat +- Radius / 111111.111 (meters per degree)
或平行方向:
NewLat = Lat
NewLong = Long +- Radius / 111111.111 / Cos(Lat)
对于随机方向,生成随机方向角并使用公式
Maps API有一个可用于计算距离、航向等的API
因此,如果您需要在与另一个点的给定距离处找到一个点,无论方向如何,都可以使用computeOffset
方法
以下代码所做的是,它在位置0,0
(var mylatng
)添加一个标记,然后在距离该点5000米的方向0
(北)添加另一个标记。如果需要的话,你当然可以改变标题
函数初始化(){
var mylatng=new google.maps.LatLng(0,0);
变量映射选项={
缩放:10,
中心:myLatLng,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var point=google.maps.geometry.spheremic.computeOffset(myLatLng,5000,0);
var map=new google.maps.map(document.getElementById(“地图画布”),mapOptions);
新的google.maps.Marker({
职位:myLatLng,
地图:地图,
标题:“原始标记”
});
新的google.maps.Marker({
位置:点,,
地图:地图,
标题:“偏移标记”
});
}
初始化()代码>
#地图画布{
高度:200px;
}
地图API有一个可用于计算距离、航向等的API
因此,如果您需要在与另一个点的给定距离处找到一个点,无论方向如何,都可以使用computeOffset
方法
以下代码所做的是,它在位置0,0
(var mylatng
)添加一个标记,然后在距离该点5000米的方向0
(北)添加另一个标记。如果需要的话,你当然可以改变标题
函数初始化(){
var mylatng=new google.maps.LatLng(0,0);
变量映射选项={
缩放:10,
中心:myLatLng,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var point=google.maps.geometry.spheremic.computeOffset(myLatLng,5000,0);
var map=new google.maps.map(document.getElementById(“地图画布”),mapOptions);
新的google.maps.Marker({
职位:myLatLng,
地图:地图,
标题:“原始标记”
});
新的google.maps.Marker({
位置:点,,
地图:地图,
标题:“偏移标记”
});
}
初始化()代码>
#地图画布{
高度:200px;
}
@NickParsons对不起,我应该澄清一下,我只需要一个点好的,圆周上的一个点应该是让x=中心。纬度+半径
和让y=中心。经度
如果我正确理解你的问题:p这意味着x坐标是53.388+527=605.392。半径以米为单位,所以我不能将其添加到coordinate@abyrne85一个距离和一个点会给你一个圆的无穷多个点。如果你只想要一个点,你应该提供另一个约束。@NickParsons对不起,我应该澄清一下,我只需要一个点OK,圆周上的一点应该是让x=中心。纬度+半径和让y=中心。经度如果我正确理解你的问题:p这意味着x坐标是53.388+527=605.392。半径以米为单位,所以我不能将其添加到coordinate@abyrne85一个距离和一个点会给你一个圆的无穷多个点。如果你只想要一个点,你应该提供另一个约束。这当然是正确的数学。但是1)你没有提供Javascript版本,2)你不需要手动计算,因为API有一个方法(见我的答案)。@MrUpsidown我不相信JS的人不能用JS编写给定的公式;)容易;)但当问题提到JS时,我会尝试提供JS。显然没什么大不了的!谢谢更新!这当然是正确的数学。但是1)你没有提供Javascript版本,2)你不需要手动计算,因为API有一个方法(见我的答案)。@MrUpsidown我不相信JS的人不能用JS编写给定的公式;)容易;)但当问题提到JS时,我会尝试提供JS。显然没什么大不了的!谢谢更新!我已经在使用几何体库,所以这是完美的。谢谢,我已经在使用几何体库了,所以这是完美的。谢谢