如何在地图上以一定半径绘制一个圆圈?此半径必须为1KM,并且必须始终在地图上保持1KM(缩小时会变小等等)。
感谢您的帮助
答案 0 :(得分:0)
是的,可以在地图上画一个圆圈。您可以通过计算构成点的点来完成此操作。以下代码采用 VELatLong 表示中心点,半径采用公里数。它返回 VEShapeType.Polygon 对象。然后,您可以使用map.AddShape()
将此形状添加到地图中。
代码段:
function AddCircle(latlong, radius)
{
var R = 6371; // earth's mean radius in km
var lat = (latlong.Latitude * Math.PI) / 180; //rad
var lon = (latlong.Longitude * Math.PI) / 180; //rad
var d = parseFloat(radius)/R; // d = angular distance covered on earth's surface
var points= new Array();
for (x = 0; x <= 360; x++)
{
var p2 = new VELatLong(0,0)
brng = x * Math.PI / 180; //rad
p2.Latitude = Math.asin(Math.sin(lat)*Math.cos(d) + Math.cos(lat)*Math.sin(d)*Math.cos(brng));
p2.Longitude = ((lon + Math.atan2(Math.sin(brng)*Math.sin(d)*Math.cos(lat), Math.cos(d)-Math.sin(lat)*Math.sin(p2.Latitude))) * 180) / Math.PI;
p2.Latitude = (p2.Latitude * 180) / Math.PI;
points.push(p2);
}
var poly = new VEShape(VEShapeType.Polyline, points);
return poly;
}