Как найти координаты границы карты Google, используя координаты центра, ширину и высоту - PullRequest
0 голосов
/ 10 января 2019

Скажем, у меня есть координата центра (1.22222, 2.3333), ширина 25 км, высота 12 км. Отсюда я хочу найти граничные точки с указанным центром

1 Ответ

0 голосов
/ 10 января 2019

В качестве опции используется библиотека геометрии метод computeOffset .

var height = 12000; // m
var width = 25000; // m
var center = new google.maps.LatLng(1.22222, 2.3333);
var bounds = new google.maps.LatLngBounds();
var top = google.maps.geometry.spherical.computeOffset(center, height / 2, 0);
var bottom = google.maps.geometry.spherical.computeOffset(center, height / 2, 180);
var left = google.maps.geometry.spherical.computeOffset(center, width / 2, -90);
var right = google.maps.geometry.spherical.computeOffset(center, width / 2, 90);
bounds.extend(top);
bounds.extend(left);
bounds.extend(bottom);
bounds.extend(right);

подтверждение концепции скрипки

фрагмент кода:

html,
body,
#map {
  width: 100%;
  height: 100%;
  padding: 0px;
  margin: 0px;
}
<div id="map"></div>
<script>
  function initMap() {
    var height = 12000; // m
    var width = 25000; // m
    var center = new google.maps.LatLng(1.22222, 2.3333);
    var bounds = new google.maps.LatLngBounds();
    var top = google.maps.geometry.spherical.computeOffset(center, height / 2, 0);
    var bottom = google.maps.geometry.spherical.computeOffset(center, height / 2, 180);
    var left = google.maps.geometry.spherical.computeOffset(center, width / 2, -90);
    var right = google.maps.geometry.spherical.computeOffset(center, width / 2, 90);
    bounds.extend(top);
    bounds.extend(left);
    bounds.extend(bottom);
    bounds.extend(right);
    var map = new google.maps.Map(document.getElementById('map'), {
      center: center,
      zoom: 2,
      mapTypeId: 'terrain'
    });
    var centerMarker = new google.maps.Marker({
      map: map,
      position: center
    })
    var rect = new google.maps.Rectangle({
      map: map,
      bounds: bounds
    });
    map.fitBounds(bounds);
  }
</script>
<!-- Replace the value of the key parameter with your own API key. -->
<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry&key= 
AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...