Вы правы.Чтобы нарисовать прямоугольник, вам понадобятся границы, которые могут быть получены из двух диагонально противоположных вершин прямоугольника, который нужно нарисовать.Допустим, у вас есть северо-западный угол и вы пытаетесь нарисовать квадрат со стороной s.Затем вы можете узнать LatLng угла SE, используя computeOffset , с расстоянием 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()
}
});