将方块添加到按其区域大小调整的地图

时间:2015-10-07 18:50:37

标签: leaflet mapbox

我遇到了一堵砖墙,试图在我的地图上添加方块。我正在使用精彩的Leaflet.draw插件,但它只支持矩形。每个广场必须是相同的区域:25英里^ 2。我尝试使用图标,但他们不会在缩放时调整大小,我不一定想要禁用缩放。此外,我注意到在我的地图周围平移时,比例不断调整。这让我相信即使在相同的缩放级别,20英里的正方形也会有不同的形状。

似乎向地图添加形状的唯一方法是使用Lat和Lng,所以我知道我必须想出一种方法将LatLng转换为Area,反之亦然。

寻找任何反馈!感谢

1 个答案:

答案 0 :(得分:1)

您可以使用Turfjs目的地方法计算目的地点:

  

获取一个点,并以度,弧度,英里或公里为单位计算目标点的位置;以度为单位。这使用Haversine公式来计算全局曲率。

http://turfjs.org/static/docs/module-turf_destination.html

使用一个给定点,您可以导出创建新多边形所需的三个点的其余部分:

var nw = {
  "type": "Feature",
  "properties": {},
  "geometry": {
    "type": "Point",
    "coordinates": [lng, lat]
  }
};

// Go from northwest to northeast etc.
var ne = turf.destination(nw, 25, 90, 'miles'),
    se = turf.destination(ne, 25, 180, 'miles'),
    sw = turf.destination(se, 25, 270, 'miles');

// Nested array of coordinates. Note reversing of coordinates
// because GeoJSON uses [lng, lat]. Leaflet uses [lat, lng]
var coordinates = [
  nw.geometry.coordinates.reverse(),
  ne.geometry.coordinates.reverse(),
  se.geometry.coordinates.reverse(),
  sw.geometry.coordinates.reverse()
];

// Create a new polygon with coordinates
var polygon = new L.Polygon(coordinates).addTo(map);

关于Plunker的示例:http://plnkr.co/edit/C2iLJF?p=preview