およそ10000m2の面積のポリゴンがあり、
どのズームレベルでポリゴンがほとんど見えなくなったかを判断しようとしています。つまり、ポリゴンを描画するのに必要なピクセル数はごくわずかであり、マップから削除して保存します。資力。
すでに実際のポリゴンの面積値を持っているので、特定のズームレベルで、マップ上に描画されたポリゴンの面積をピクセル単位で計算するにはどうすればよいですか?
質問する
2132 次
2 に答える
6
問題を単純化するために、ポリゴン自体ではなくポリゴンの境界で作業することをお勧めします。そうすれば、常に長方形を扱い、不規則な多角形のサイズを計算する手間を省くことができます。それを念頭に置いて、ポリゴンが単純でパスが 1 つしかないと仮定すると、次のようなことができます。
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
境界ではなくポリゴンを含むバージョン、Google マップ:
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;
256
はTileSize
地図6378137
の で、メートル単位の地球の半径です。四角形のピクセルでポリゴンの面積を取得します。height * length
これを正方形のピクセル ( of div
)でマップの寸法と比較できます。
于 2014-07-08T12:23:17.100 に答える