您的位置:首页 > 编程语言 > Go语言

Google Maps API 进级:计算折线长度

2009-12-18 10:49 363 查看
转自:http://hi.baidu.com/xfm_zhr/blog/item/fbfe5c274a87a904908f9d28.html

1. 如何编码经纬度

对于静态、不需要修改的数据,可利用Google提供的在线编码工具进行获取。详情参见相关文档。

对于需动态生成的数据,可根据Google提供的编码算法说明,对进行编码实现使用。有关编码说明参加Google的相关文档。

2. 有关计算折线长度

基本思路:将地球作为一个完美球体。计算折线相邻两点的距离(弧长,半径*弧度)进行累加即可获取。

因为以上方法采取了近似处理,因此获取的值仅供参考。

几个关于GlatLng的方法:

GlatLng.lat();//返回角度值纬度

GlatLng.lng();//返回角度值经度

GlatLng.latRadians();//返回弧度值纬度

GlatLng.lngRadians();//返回弧度值经度。

计算弧长示例:

function getDistance2(from, to, unit) {

//地球半径

var R = 6378.137;

//千米英里转化进制

var M = 1.609344;

with (Math)

{

var lat1 = from.latRadians();

var lng1 = from.lngRadians();

var lat2 = to.latRadians();

var lng2 = to.lngRadians();

var dist = 2 * asin(sqrt( pow( (sin( (lat1 - lat2) /2 ) ), 2) + cos(lat1) * cos(lat2) * pow( (sin( (lng1 - lng2) / 2) ) ,2) ) ) * R;

}

if (unit=="M")

{

dist = dist / M;

}

return dist;

}

计算折线总长示例:

function getDistance() {

var dist = 0;

//折线上总的顶点数

var count = polyline.getVertexCount();

//历遍所有顶点,计算距离

for(var i=0; i<count-1; i++){

dist += getDistance2(polyline.getVertex(i), polyline.getVertex(i+1));

}

return dist;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: