commit f0ae3a0288b958358f1ccb3865d5ff48274e252e
parent 1eff0bedb6f3dd79b05305b3e8ba662ab58a1ea9
Author: Sergej Orlov <wladimirych@gmail.com>
Date: Tue, 18 Apr 2017 01:28:32 +0300
[wikimapia] fixed simplification of polygons
Diffstat:
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/lib/leaflet.layer.wikimapia/wm-utils.js b/src/lib/leaflet.layer.wikimapia/wm-utils.js
@@ -121,13 +121,16 @@ function asap() {
return new Promise((resolve) => setTimeout(resolve, 0));
}
-function simplifyPolygon(latlngs, tileCoords, projectObj) {
+function simplifyPolygon(latlngs, tileCoords, tileHasChildren, projectObj) {
const
x = tileCoords.x * 1024,
y = tileCoords.y * 1024,
p0 = projectObj.unproject([x, y]),
- p1 = projectObj.unproject([x + 1, y + 1]),
- pixelDegSize = p0.lat - p1.lat;
+ p1 = projectObj.unproject([x + 1, y + 1]);
+ let pixelDegSize = p0.lat - p1.lat;
+ if (!tileHasChildren && tileCoords.z < 15) {
+ pixelDegSize /= (1 << (15 - tileCoords.z));
+ }
let points = [];
for (let i = 0; i < latlngs.length; i++) {
let ll = latlngs[i];
@@ -197,8 +200,8 @@ async function parseTile(s, projectObj) {
if (coords.length < 3) {
throw new Error(`Polygon has ${coords.length} points`);
}
- place.polygon = coords;
- let polygon = simplifyPolygon(coords, tile.coords, projectObj);
+ let polygon = simplifyPolygon(coords, tile.coords, tile.hasChildren, projectObj);
+ place.polygon = polygon;
place.localPolygon = makeCoordsLocal(polygon, tile.coords, projectObj);
places.push(place);
}