рисовать на карте прямоугольники с определенными размерами - PullRequest
0 голосов
/ 08 мая 2020

Я хотел бы нарисовать меня 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) или другими способами это действительно решило бы мою проблему. Спасибо!

1 Ответ

0 голосов
/ 08 мая 2020
img = matplotlib.image.imread("./kite_logo.png")
figure, ax = pyplot.subplots(1)
rect = patches.Rectangle((125,100),50,25, edgecolor='r', facecolor="none")
ax.imshow(img)

Отображает изображение

ax.add_patch(rect)

Добавить прямоугольник к изображению

...