如何创建具有特定尺寸的预定义多边形

时间:2018-09-21 21:41:19

标签: google-maps

我有一个初始纬度/经度来自Google地图中的click事件。 使用该纬度/经度,我希望能够构造一个2km x 2km的矩形多边形。由于已经有了经纬度,因此我尝试使用computeOffset查找矩形的SE角。

  var initial_pos = new google.maps.LatLng(lat, lng)
  var south = spherical.computeOffset(initial_pos, 2000, 135); 
  var east  = spherical.computeOffset(initial_pos, 2000, 90);

  var bounds = new google.maps.LatLngBounds(
    initial_pos,  south, east
  );
  var rectangle = new google.maps.Rectangle({
    map:map,
    bounds: bounds
  });

1 个答案:

答案 0 :(得分:1)

你是对的。要绘制矩形,您将需要边界,该边界可以从要绘制的矩形的两个对角相对的顶点得出。假设您有NW(西北)角,并且正在尝试绘制s的正方形。然后,您可以使用computeOffset找出SE角的LatLng,距离为s *√2(以米为单位),航向为135(度)。

以下是有关当前发布的源代码的建议:

您只能计算一次新头寸。由于此位置是对角线相对,因此距离应为2000 * 1.414。另外,请注意,边界未使用LatLng初始化。它们用四个变量初始化。北和南是纬度值。东和西是Lng值。这是我的代码更改建议。请尝试一下。请将此视为伪代码,并根据需要进行适当的更改。(下面的代码现在在我的编辑过程中已更新,并且可以正常工作。确保在script标记中添加了library = geometry,例如

<script async defer
    src="https://maps.googleapis.com/maps/api/js?key=API_KEY&libraries=geometry&callback=initGMap">
    </script>)



  var initial_pos = new google.maps.LatLng(18.39,77.12);
  // initialize initial_pos variable based on click event or so
  var calculated_pos = google.maps.geometry.spherical.computeOffset(initial_pos, 200*1.414, 135); 


  var rectangle = new google.maps.Rectangle({

    map: map,
    bounds:{ 
      north: initial_pos.lat(),
      south: calculated_pos.lat(),
      west: initial_pos.lng(),
      east: calculated_pos.lng()
    }
  });