我有一个初始纬度/经度来自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
});
答案 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()
}
});