谷歌地图,椭圆内的矩形边界

时间:2013-05-15 09:28:01

标签: javascript google-maps google-maps-api-3

我正在使用伟大的Google Maps Shapes library在我的地图上绘制带有四个给定点的椭圆,麻烦的是椭圆打破了我设想的“矩形/正方形”的边界。

[编辑 - 更新图片]

请参阅此图,了解它如何突破界限:

enter image description here

粉红点是我想要的边界矩形(忽略绿色)

如何将此椭圆保持在这些边界内(此处的目标是匹配源自中心的蓝色/格力和橙色线的外部。)

[编辑]

某些标记的位置,但这些会根据用户输入而改变

_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;

1 个答案:

答案 0 :(得分:1)

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

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

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

这将为您提供更小的轴长度,这正是您所需要的。下一步是定义它的方向。我从未在谷歌地图上画过椭圆,所以我无法帮助你。

顺便提一下,对于一些有用的椭圆信息,

http://mathworld.wolfram.com/Ellipse.html,包括将日食绑定到各种形状的公式列表。