如何使用传单绘制100米x 100米的矩形

时间:2016-05-19 20:06:24

标签: javascript leaflet latitude-longitude geography

我需要在地图上绘制一个大约100mx100m的矩形。但正如你所知,只有使用纬度和经度,并且由于某种原因,我似乎无法使用可能解决这个问题的公式使其工作。

这是我最近的尝试:

var data = {
    sw: {
        lat: e.layer.getLatLngs()[1].lat,
        lng: e.layer.getLatLngs()[1].lng + (100 / 6378137) * (180 / Math.PI) / Math.cos(e.layer.getLatLngs()[1].lng * Math.PI / 180)

    },
    nw: {
        lat: e.layer.getLatLngs()[1].lat,
        lng: e.layer.getLatLngs()[1].lng
    },
    se: {
        lat: e.layer.getLatLngs()[1].lat - (100 / 6378137) * (180 / Math.PI),
        lng: e.layer.getLatLngs()[1].lng + (100 / 6378137) * (180 / Math.PI) / Math.cos(e.layer.getLatLngs()[1].lng * Math.PI / 180)
    },
    ne: {
        lat: e.layer.getLatLngs()[1].lat - (100 / 6378137) * (180 / Math.PI),
        lng: e.layer.getLatLngs()[1].lng
    },
}
e.layer.setLatLngs([data.sw, data.nw, data.ne, data.se]); //e.layer.getLatLngs()[0], ...[1], ...[2], ...[3]

1 个答案:

答案 0 :(得分:2)

你必须使用纬度的余弦,而不是经度的余弦。除此之外,你的数字是正确的。

供参考,另请参阅http://playground-leaflet.rhcloud.com/jop/edit?html,output