diff --git a/js/id/core/entity.js b/js/id/core/entity.js index 0ec14f70b..3769f8fc0 100644 --- a/js/id/core/entity.js +++ b/js/id/core/entity.js @@ -95,6 +95,12 @@ iD.Entity.prototype = { return this.extent(resolver).intersects(extent); }, + area: function(resolver, path) { + return resolver.transient(this, 'area', function() { + return path.area(this); + }); + }, + hasInterestingTags: function() { return _.keys(this.tags).some(function(key) { return key != 'attribution' && diff --git a/js/id/svg/areas.js b/js/id/svg/areas.js index 6f28d1a98..7d3277233 100644 --- a/js/id/svg/areas.js +++ b/js/id/svg/areas.js @@ -37,12 +37,12 @@ iD.svg.Areas = function(projection) { if (multipolygon = iD.geo.isSimpleMultipolygonOuterMember(entity, graph)) { areas[multipolygon.id] = { entity: multipolygon.mergeTags(entity.tags), - area: Math.abs(path.area(entity)) + area: Math.abs(entity.area(graph, path)) }; } else if (!areas[entity.id]) { areas[entity.id] = { entity: entity, - area: Math.abs(path.area(entity)) + area: Math.abs(entity.area(graph, path)) }; } }