2013-05-15 46 views
0

我使用伟大的Google Maps Shapes library在我的地图上绘制具有四个给定点的椭圆,麻烦在于椭圆打破了我设想的“矩形/平方”的边界。谷歌地图,矩形范围内的椭圆

[编辑 - 更新图片]

看到这个图形它是如何打破界限的例子:

enter image description here

粉红色的点是边框我想(忽略绿色的)

如何将这个椭圆保持在这些边界内(这里的目标是匹配蓝色/格力和橙色线ori的外部区域从中心ginating。)

[编辑]

一些标记但这些变化取决于用户输入的位置

_s.OVAL_MARKERS = [ 
    // Top 
    new google.maps.LatLng(51.583487043925224, -0.16044229844476376), 
    // Right 
    new google.maps.LatLng(51.58339184515312, -0.16013348842307096), 
    // Bottom 
    new google.maps.LatLng(51.58317916077958, -0.16026707625337622), 
    // Left 
    new google.maps.LatLng(51.583331361647325, -0.16064041535150864) 
]; 

我使用创建的代码椭圆形(为了清晰的变量而对本贴进行了修改)

var b = new _g.LatLngBounds(); 

_s.OVAL_MARKERS.forEach(function (m) { 
    b.extend(m); 
}); 

var major_axis = _gs.computeDistanceBetween(
    b.getNorthEast(), 
    new _g.LatLng(
     b.getSouthWest().lat(), 
     b.getNorthEast().lng() 
    ) 
)/2; 
var minor_axis = _gs.computeDistanceBetween(
    new _g.LatLng(b.getCenter().lat(), b.getSouthWest().lng()), 
    new _g.LatLng(b.getCenter().lat(), b.getNorthEast().lng()) 
)/2; 
+0

[Google地图 - 根据4坐标绘制椭圆]的可能重复(http://stackoverflow.com/questions/13157880/google-maps-draw-ellipse-based-off-4-coordinates) – geocodezip

+0

它不是一个副本,他问“如何制作椭圆”我在问如何使椭圆只与边界矩形一样大。 –

+0

但解决方案是一样的。 – geocodezip

回答

1

你的短轴计算是完全错误的。现在,你正在制作一个将通过所有四个点的椭圆。而不是这样做,你需要做的是计算边缘之间的距离。换句话说:

var minorAxis = _gs.computeDistanceBetween(_m[1], _m[3]); 
var majorAxis = _gs.computeDistanceBetween(_m[1], _m[2]); 

(假定1是连接到2顶点和3)

这会给你小轴的长度,这是你正在寻找的。下一步是定义它的方向。我从未在Google地图中绘制过椭圆,因此我无法为您提供帮助。

http://mathworld.wolfram.com/Ellipse.html对于一些有用的椭圆信息,顺便说一句,包括将日食绑定到各种形状的公式列表。