Google maps 如何创建具有特定大小的预定义多边形

Google maps 如何创建具有特定大小的预定义多边形,google-maps,Google Maps,我有一个初始Lat/Lng来源于谷歌地图中的点击事件。 使用Lat/Lng,我希望能够构建一个2公里乘2公里的矩形多边形。因为我已经有了一个lat/lng,所以我尝试使用computeOffset查找矩形的SE角 var initial_pos = new google.maps.LatLng(lat, lng) var south = spherical.computeOffset(initial_pos, 2000, 135); var east = spherical.co

我有一个初始Lat/Lng来源于谷歌地图中的点击事件。 使用Lat/Lng,我希望能够构建一个2公里乘2公里的矩形多边形。因为我已经有了一个lat/lng,所以我尝试使用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
  });

你说得对。要绘制矩形,需要边界,边界可以从要绘制的矩形的两个对角顶点导出。假设你有西北角,你想画一个s边的正方形。然后,您可以使用以s为单位的距离找到SE角的板条*√2(以米为单位),航向为135(度)

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

您应该只计算一次新位置。由于该位置对角,距离应为2000*1.414。另外,请注意,边界不是用LatLng初始化的。它们由四个变量初始化。北和南是纬度值。东西方为液化天然气价值。下面是我的代码更改建议。请试一试。请将此视为伪代码,并根据需要进行适当的更改。(以下代码现在在我的编辑过程中更新,应该可以工作。请确保在脚本标记中添加libraries=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()
    }
  });

)
var initial_pos=new google.maps.LatLng(18.39,77.12);
//根据单击事件等初始化初始_pos变量
var calculated_pos=google.maps.geometry.Spheremic.computeOffset(初始_pos,200*1.414141135);
var rectangle=new google.maps.rectangle({
地图:地图,
界限:{
北:初始位置纬度(),
南:计算位置纬度(),
西:初始位置lng(),
东部:计算的液化天然气位置()
}
});

Hi Ravindra,谢谢你的帮助,我已经根据你的答案更新了我的帖子,你能告诉我我做错了什么吗。我已经更新了我的答案,并建议修改一些代码。嘿@Ravindra,所以在我到达北、南、西、东-创建边界后,我做了var NW=new google.maps.LatLng(北、西)var SE=new google.maps.LatLng(南部、东部)var bounds=新的google.maps.LatLngBounds(西北部、东南部);并将边界传递给我的rect。它看起来正确吗?我只是想澄清一下,我想到了另一个边界构造函数,它分别取了4个值。进一步查找后,我意识到边界构造函数接受两个LatLng,正如您上面所做的。所以这应该行得通。在这种情况下,我们不需要得到北、南……值。我们可以直接使用初始位置和计算位置来构造矩形。你能告诉我为什么我们要乘以2000*1.414吗