2

我有一个近似面积为 10 000 平方米的多边形
我试图确定多边形在哪个缩放级别上变得几乎不可见,这意味着 - 绘制多边形所需的像素数可以忽略不计,并将其从地图中删除以保存资源。
由于我已经有了一个真实的多边形面积值,我如何计算在地图上绘制的多边形的面积(以像素为单位)以获取特定的缩放级别?

4

2 回答 2

6

为了简化问题,我建议使用多边形的边界而不是多边形本身。这样你总是处理一个矩形,避免计算不规则多边形大小的麻烦。考虑到这一点,并假设您的多边形很简单并且只有一条路径,您可以执行以下操作:

var points = poly.getPath();
var bounds = new google.maps.LatLngBounds();
for (var n = 0; n < points.length ;n++){
    bounds.extend(points[n]);
}
var SW = bounds.getSouthWest();
var NE = bounds.getNorthEast();

var proj = map.getProjection();
var swPx = proj.fromLatLngToPoint(SW);
var nePx = proj.fromLatLngToPoint(NE);
var pixelWidth = (nePx.x - swPx.x)* Math.pow(2, map.getZoom());
var pixelHeight = (nePx.y - swPx.y)* Math.pow(2, map.getZoom());
于 2012-07-03T09:13:25.137 回答
2

带有多边形而不是边界的版本,谷歌地图:

var square_meters = google.maps.geometry.spherical.computeArea(yourPolygon.getPath());

var init_resolution = 256 / (2 * Math.PI * 6378137);

var zoom = map.getZoom();

var resolution = init_resolution * Math.pow(2,zoom);

var area_factor = Math.pow(resolution,2);
var square_pixels = square_meters * area_factor;

256TileSize地图和6378137地球的半径,以米为单位。您以平方像素为单位获得多边形的面积。您可以将其与以平方像素(height * lengthdiv)为单位的地图尺寸进行比较;

于 2014-07-08T12:23:17.100 回答