0

我一直在寻找解决方案,但没有成功,我想做的是通过指定半径和中心,在地图上画一个圆。用于形状的Bing Maps Ajax Control 6.3文档不包括圆形。有没有办法在地图上画圆圈?

任何帮助,将不胜感激。

4

1 回答 1

1

您应该查看 Mike Garza 的博客 (Garzilla),该博客围绕您的需求创建了非常有趣的示例:http ://www.garzilla.net/vemaps/CircleDragHandle.aspx

以下是生成圆圈位置的示例代码:

function buildCircle(latin, lonin, radius) {
    var locs = new Array();
    var lat1 = latin * Math.PI / 180.0;
    var lon1 = lonin * Math.PI / 180.0;
    var d = radius / 3956;
    var x;
    for (x = 0; x <= 360; x+=10) {
        var tc = (x / 90) * Math.PI / 2;
        var lat = Math.asin(Math.sin(lat1) * Math.cos(d) + Math.cos(lat1) * Math.sin(d) * Math.cos(tc));
        lat = 180.0 * lat / Math.PI;
        var lon;
        if (Math.cos(lat1) == 0) {
            lon = lonin; // endpoint a pole 
        }
        else {
            lon = ((lon1 - Math.asin(Math.sin(tc) * Math.sin(d) / Math.cos(lat1)) + Math.PI) % (2 * Math.PI)) - Math.PI;
        }
        lon = 180.0 * lon / Math.PI;
        var loc = new VELatLong(lat, lon);
        locs.push(loc);
    }
    return locs;
}

这里的代码将其添加到地图上并使用以前的方法:

//Build circle        
circle = new VEShape(VEShapeType.Polygon, circlePoints);        
circle.HideIcon();        
circle.SetLineWidth(2);        
map.AddShape(circle);
于 2013-02-07T07:38:00.147 回答