我正在使用一个有角项目的Google地图。我有一个圆的圆心和以米为单位的半径长度。我试图在圆的圆周上找到任何点的坐标-我只需要一个。给定我该如何计算?
示例数据:
Center = {
Latitude : 53.388922117675236
Longitude : -6.280994415283203
}
Radius = 527
答案 0 :(得分:2)
如果需要给定距离的任意点,最简单的方法是选择子午线方向
NewLong = Long
NewLat = Lat +- Radius / 111111.111 (meters per degree)
或平行方向:
NewLat = Lat
NewLong = Long +- Radius / 111111.111 / Cos(Lat)
对于随机方向,生成随机方位并使用this page中的公式
Formula:
φ2 = asin( sin φ1 ⋅ cos δ + cos φ1 ⋅ sin δ ⋅ cos θ )
λ2 = λ1 + atan2( sin θ ⋅ sin δ ⋅ cos φ1, cos δ − sin φ1 ⋅ sin φ2 )
where φ is latitude, λ is longitude,
θ is the bearing (clockwise from north),
δ is the angular distance d/R;
d being the distance travelled, R the earth’s radius
JavaScript:(all angles in radians)
var φ2 = Math.asin( Math.sin(φ1)*Math.cos(d/R) +
Math.cos(φ1)*Math.sin(d/R)*Math.cos(brng) );
var λ2 = λ1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(φ1),
Math.cos(d/R)-Math.sin(φ1)*Math.sin(φ2));
答案 1 :(得分:1)
Maps API有一个geometry library,可用于计算距离,航向等。
因此,如果您需要在距另一点的给定距离处找到1个点,无论标题如何,都可以使用computeOffset
方法。
以下代码的作用是,在位置0,0
(var myLatLng
)处添加一个标记,然后在距该点5000米处的0
方向(北)处添加另一个标记。当然,您可以根据需要更改标题。
function initialize() {
var myLatLng = new google.maps.LatLng(0,0);
var mapOptions = {
zoom: 10,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var point = google.maps.geometry.spherical.computeOffset(myLatLng, 5000, 0);
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
new google.maps.Marker({
position: myLatLng,
map: map,
title: 'Origin marker'
});
new google.maps.Marker({
position: point,
map: map,
title: 'Offset marker'
});
}
initialize();
#map-canvas {
height: 200px;
}
<div id="map-canvas"></div>
<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry"></script>
请注意如何加载API,包括几何库。