2011-02-11 53 views
1

有没有一种方法可以将一段代码翻译成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(); 

谢谢
问候

+0

请考虑以下技术作为替代方法:http://gmaps-samples-v3.googlecode.com/svn/trunk/circle-overlay/circle-overlay.html – Orbling 2011-02-11 22:17:33

回答

1

我想出了这个例子让你有关于如何计算积分的想法。您需要弄清楚如何为纬度/经度做任何必要的转换。

/** 
* 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(使用拉斐尔密谋)

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

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

  • 当您知道角度间隔时,可以计算圆上一个点的角度(θ)。一旦你有theta(角度),你有极坐标(半径,角度)。为了在这个问题上对我们有任何用处,您需要将极坐标转换为笛卡尔坐标(x,y)。你可以做到这一点使用下面的公式是:
    X = COS(THETA)*半径
    Y = SIN(THETA)*半径

这几乎是它概括地说。