2011-02-11 50 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)*半徑

這幾乎是它概括地說。