我想在地图上绘制网格,以公里为单位定义测量。例如,绘制长度为10公里,高度为12公里的矩形。我希望能够定义这样的测量值,然后屏幕将被这些网格(矩形)分割,如你所见。此处.目前,我正在获取屏幕的坐标(NorthE,NorthW,SouthE,SouthW),并将其除以一个数字,并在里面循环,所以我可以用googlemaps API用这些坐标绘制矩形。我的问题是,我是否可以做同样的事情,但不需要定义一个数字来划分经度和纬度,我是否可以为我的矩形定义高度和长度的大小(以km或m为单位),这样我就可以得到如下的结果(用定义大小的矩形划分屏幕)我的代码如下。
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)
}
}
}
响应不一定要用googlemaps,如果我可以用查询(MySQL)或其他方式,它将真正解决我的问题.Thanks !
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)
在图像上添加矩形