如何在Google Earth上画正圆

overlv 2009-12-27 01:59:09
前几天我写了一个在Google earth上画扇形的方法。

//画一个扇形 半径,初始角度,旋转角度,纬度,经度,颜色,姓名
function DrawShanxing(r, initDegree, Degree, lat, lon, color, name) {
//创建一个画板可以让你开始画画
var polygonPlacemark = ge.createPlacemark('');
polygonPlacemark.setGeometry(ge.createPolygon(''));
var outer = ge.createLinearRing('');
polygonPlacemark.getGeometry().setOuterBoundary(outer);
//设置扇形的颜色
var style = ge.createStyle(name);
style.getPolyStyle().getColor().set(color);
style.getLineStyle().getColor().set('00ffffff');
polygonPlacemark.setStyleSelector(style);

//为画板添加事件
google.earth.addEventListener(polygonPlacemark, 'click', function(event) { try{GAjax.getPlotInfo(name,callback);}catch(err){alert(err.description )} });
//将画板加入到地图中
ge.getFeatures().appendChild(polygonPlacemark);

var coords = outer.getCoordinates();
var bLat, bLng;
//画一条边
bLng = Math.cos(initDegree * 3.1415926 / 180) * r;
bLat = Math.sin(initDegree * 3.1415926 / 180) * r;

coords.pushLatLngAlt(lat + bLat, lon + bLng, 0);

//画顶点

coords.pushLatLngAlt(lat, lon, 0);
//画二条边
bLng = Math.cos(initDegree * 3.1415926 / 180 + Degree * 3.1415926 / 180) * r;
bLat = Math.sin(initDegree * 3.1415926 / 180 + Degree * 3.1415926 / 180) * r;
coords.pushLatLngAlt(lat + bLat, lon + bLng, 0);




for (var i = 15; i > 0; i--) {
bLng = Math.cos(initDegree *Math.PI / 180 + Degree / 15 * Math.PI / 180 * i) * r;
bLat = Math.sin(initDegree * Math.PI / 180 + Degree / 15 * Math.PI / 180 * i) * r;
coords.pushLatLngAlt(lat + bLat, lon + bLng, 0);
}

}

但是这个方法有一个缺陷,就是地球是一个椭圆的,这样用经纬度画出的圆在赤道附近是正常的,但是越到两极越像椭圆。

我想过用定一个中心坐标,再以距离计算周围坐标。但是我不知道公式以及该如何计算。

希望各位老大们不吝赐教。
...全文
1320 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
overlv 2010-01-14
  • 打赏
  • 举报
回复
这个程序是在网页上使用Google提供的API进行地图进行一些标识用的。

你可以在Google 上搜索Google Earth APi查看更多消息。
cfdream 2010-01-12
  • 打赏
  • 举报
回复
楼上说的正解。
不过对于楼主的程序我倒是很感兴趣,这个程序用在哪里呢?是怎么写出来的啊?非常想知道这个
wuyq11 2009-12-27
  • 打赏
  • 举报
回复
通过地图比例和经纬度距离求实际距离
http://topic.csdn.net/u/20090716/16/5c4756e9-4c6e-43f0-b139-8d36756b7f60.html
Lovely_baby 2009-12-27
  • 打赏
  • 举报
回复
看看~~

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧