有没有办法将一段代码翻译成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 :(得分: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
简而言之,这就是它。