From 51cb9af90782a5271a0863f3ee10b6d52af09261 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 13 May 2013 22:46:29 -0700 Subject: [PATCH] Cache area --- js/id/core/entity.js | 6 ++++++ js/id/svg/areas.js | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) 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)) }; } }