如何在mapview上的一个点周围画一个圆圈?

时间:2010-09-20 05:35:21

标签: android

如何在地图上以一定半径绘制一个圆圈?此半径必须为1KM,并且必须始终在地图上保持1KM(缩小时会变小等等)。

感谢您的帮助

1 个答案:

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