Gmap:如何在地球上绘制正方形(纬度,经度)

Posted

技术标签:

【中文标题】Gmap:如何在地球上绘制正方形(纬度,经度)【英文标题】:Gmap: how to draw squares on Earth (lat, lon) 【发布时间】:2012-07-29 17:47:35 【问题描述】:

我想画一个正方形

rectangle = new google.maps.Rectangle();
var rectOptions = 
    strokeColor : "#FF0000",
    strokeOpacity : 0.8,
    strokeWeight : 2,
    fillOpacity : 0,
    map : map
;
rectangle.setOptions(rectOptions);

长度为 0.005'

google.maps.event.addListener(map, 'dragend', function() 

    var center = map.getCenter();
    rectangle.setBounds(new google.maps.LatLngBounds(
            new google.maps.LatLng(center.lat()-0.005, center.lng()-0.005),
            new google.maps.LatLng(center.lat()+0.005, center.lng()+0.005)));
);

但我意识到这个正方形是赤道附近的正方形,但在其他地方相当变形, 是否有一个函数随着纬度减小以获得经度的等效长度?谢谢你的帮助

编辑:正方形的高度 = cos(lat)width

【问题讨论】:

您需要准确地定义您要如何测量您想看到的正方形。 angular“长度”相等的边至少在地图上看起来是矩形的。如果您希望您的正方形有真正的直角角在地球上,那么边会在地图上张开,并且最靠近极点的边看起来太长。你的公式可能是dX(a)=cos(a)*dY,但我认为这不会产生任何定义的正方形。 thx 工作 var center = map.getCenter(); var c = Math.cos(center.lat()* Math.PI / 180); rectangle.setBounds(新 google.maps.LatLngBounds(新 google.maps.LatLng(center.lat()-crad, center.lng()-rad), 新 google.maps.LatLng(center.lat( )+crad, center.lng()+rad))); @andrew,再次感谢,也将这个角度转换为公里,它是 theta*6371*Pi/180 对吗?因为它在地图上看起来很大 地球周长平均为 40075 公里,因此大圆距离的转换为 (theta/360)*40075km。我仍然不知道你实际上在做什么,或者你最终会得到什么。 有这样漂亮的正方形 1000 公里一个 i45.tinypic.com/x6a04.png 【参考方案1】:

来自 Andrew Leach 的评论:

function drawSquare(position=new google.maps.LatLng(41, 36.12), radius=0.001)

    var rectangle = new google.maps.Rectangle();
    var rectOptions = 
        strokeColor : "#FF0000",
        strokeOpacity : 0.8,
        strokeWeight : 2,
        fillOpacity : 0
    ;
    rectangle.setOptions(rectOptions);

    var c = Math.cos(position.lat()* Math.PI / 180);
    rectangle.setBounds(new google.maps.LatLngBounds(
            new google.maps.LatLng(position.lat()-c*radius/2, position.lng()-radius/2),
            new google.maps.LatLng(position.lat()+c*radius/2, position.lng()+radius/2)));
    return rectangle;

【讨论】:

以上是关于Gmap:如何在地球上绘制正方形(纬度,经度)的主要内容,如果未能解决你的问题,请参考以下文章

如何在等值线图上绘制出现点(经度/纬度)?

怎样描述一个地方的经度和纬度·

如何确定一个位置是不是在一个正方形(纬度,经度)PHP内

两个经纬度算距离公式 方法是啥

如何从球面上的当前点(纬度/经度)找到线段上最近的点

使用 Matlab 在世界地图上绘制纬度和经度网格