Я хотел бы нарисовать меня sh на карте, указав размер в км. Например, рисование прямоугольников длиной 10 км и высотой 12 км. Я хотел бы иметь возможность определять такие измерения, а затем экран будет разделен на эти sh (прямоугольники), как вы можете видеть здесь . В настоящее время я получаю координаты экрана (NorthE, NorthW, SouthE, SouthW), делю их на число и зацикливаю внутри него, чтобы я мог рисовать прямоугольники с помощью API googlemaps с этими координатами. Мой вопрос: могу ли я сделать то же самое, но вместо определения числа для разделения долготы и широты, могу ли я определить размер (в км или м) для высоты и длины для моих прямоугольников, чтобы я мог получить тот же результат, что и ниже (разделение экрана прямоугольниками определенного размера) Мой код выглядит следующим образом:
function drawRectanglezoom(map,zoom) {
var bounds = map.getBounds();
var longeur = []
var largeur = []
var zoomy = zoom /2
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var tileWidth = (northEast.lng() - southWest.lng()) / zoom;
var tileHeight = (northEast.lat() - southWest.lat()) / zoomy;
for (var x = 0; x <= zoom; x++) {
for (var y = 0; y <= zoom; y++) {
var a = new google.maps.LatLng(southWest.lat() + (tileHeight * y),southWest.lng() + (tileWidth * x))
var b = new google.maps.LatLng(southWest.lat() + (tileHeight * y),southWest.lng() + (tileWidth * (x+1)))
var c = new google.maps.LatLng(southWest.lat() + (tileHeight * y),southWest.lng() + (tileWidth * x))
var d = new google.maps.LatLng(southWest.lat() + (tileHeight * (y+1)),southWest.lng() + (tileWidth * x))
distancelongeur = google.maps.geometry.spherical.computeDistanceBetween (a, b);
distancehauteur = google.maps.geometry.spherical.computeDistanceBetween (c, d);
largeur.push(distancehauteur)
longeur.push(distancelongeur)
// console.log(' distance entre A et B', distancelongeur)
// console.log('hauteur distance entre C et D', distancehauteur)
var areaBounds = {
north: southWest.lat() + (tileHeight * (y+1)),
south: southWest.lat() + (tileHeight * y),
east: southWest.lng() + (tileWidth * (x+1)),
west: southWest.lng() + (tileWidth * x)
};
var area = new google.maps.Rectangle({
strokeColor: '#FF0000',
map: map,
bounds: areaBounds
});
area.setMap(map)
list.push(area)
}
}
}
Ответ не обязательно должен быть с картами Google, если я могу сделать это с помощью запросов (MySQL) или другими способами это действительно решило бы мою проблему. Спасибо!