在谷歌地图中显示点周围的针脚

时间:2011-02-11 20:27:37

标签: javascript google-maps

有没有办法将一段代码翻译成javascript,这样我就可以考虑半径来显示一个点周围的地图引脚?

var data=[
  {long:3,lat:2},
  {long:5,lat:2},
  {long:2,lat:3}
];

aCoord={long:1,lat:2};

for(var i=0;i<data.length;i++){
  if (data[i] is 30 kms far from aCoord)
    myMap.addPin(data[i]);
}

myMap.autozoom();

谢谢你,
此致

1 个答案:

答案 0 :(得分:1)

我想出了这个例子,所以你对如何计算积分有所了解。你需要弄清楚如何为lat / lon做任何必要的转换。

/**
* Returns coordinates for N points around a circle with a given radius from
* the center.
*
* center: array [x, y]
* radius: int
* num_points: int
*/
function get_points_on_circle(center, radius, num_points) {
    if (!num_points) num_points = 10;

    var interval = Math.PI * 2 / num_points;
        points = [];

    i = -1;
    while (++i < num_points) {
        var theta = interval * i,
            point = [Math.cos(theta) * radius + center[0], Math.sin(theta) * radius + center[1]];
        points.push(point);
    }

    return points;
}


// Sample usage
var center = [250, 250],
    radius = 100,
    num_points = 10;

var points = get_points_on_circle(center, radius, num_points);

Test it out(使用Raphael绘图)

如果您有兴趣了解一下逻辑:

  • 弧度是角度的度量单位。一个圆圈中总共有2 *个PI弧度。使用这一事实,您可以通过执行2*PI/num_points来计算圆圈上任意数量的点的角度间隔。

  • 当您知道角度间隔时,可以计算圆上某点的角度(θ)。一旦你有theta(角度),你就有了极坐标(半径,角度)。为了在这个问题上对我们有用,你需要将极坐标转换为笛卡尔坐标(x,y)。您可以使用以下公式来实现:
    x = cos(theta)*半径
    y = sin(theta)* radius

简而言之,这就是它。