diff --git a/js/id/core/entity.js b/js/id/core/entity.js index e8181da16..013d53bca 100644 --- a/js/id/core/entity.js +++ b/js/id/core/entity.js @@ -108,6 +108,14 @@ iD.Entity.prototype = { }); }, + // Returns the centroid of the area, in unprojected coordinates. + centroid: function(resolver) { + return resolver.transient(this, 'centroid', function() { + return iD.Entity.areaPath.projection().invert( + iD.Entity.areaPath.centroid(this.asGeoJSON(resolver, true))); + }); + }, + hasInterestingTags: function() { return _.keys(this.tags).some(function(key) { return key != 'attribution' && diff --git a/js/id/svg/labels.js b/js/id/svg/labels.js index abb0a9251..25dd3d3d3 100644 --- a/js/id/svg/labels.js +++ b/js/id/svg/labels.js @@ -362,8 +362,7 @@ iD.svg.Labels = function(projection, context) { } function getAreaLabel(entity, width, height) { - var path = d3.geo.path().projection(projection), - centroid = path.centroid(entity.asGeoJSON(graph, true)), + var centroid = projection(entity.centroid(graph)), extent = entity.extent(graph), entitywidth = projection(extent[1])[0] - projection(extent[0])[0], rect;