diff --git a/modules/ui/entity_issues.js b/modules/ui/entity_issues.js index d5623ba50..c9e0999d9 100644 --- a/modules/ui/entity_issues.js +++ b/modules/ui/entity_issues.js @@ -101,6 +101,7 @@ export function uiEntityIssues(context) { issue.select('.label') .on('click', function() { + context.map().centerZoomEase(d.loc(), Math.max(context.map().zoom(), 18)); if (list.style('display') === 'none') { list.style('display', 'block'); } else { diff --git a/modules/ui/issues.js b/modules/ui/issues.js index b2bb8d638..f4401fd34 100644 --- a/modules/ui/issues.js +++ b/modules/ui/issues.js @@ -130,6 +130,7 @@ export function uiIssues(context) { .placement('bottom') ) .on('click', function(d) { + context.map().centerZoomEase(d.loc(), Math.max(context.map().zoom(), 18)); if (d.entities) { context.enter(modeSelect( context, diff --git a/modules/validations/validation_issue.js b/modules/validations/validation_issue.js index c8ffe5780..85c5b063c 100644 --- a/modules/validations/validation_issue.js +++ b/modules/validations/validation_issue.js @@ -51,6 +51,17 @@ export function validationIssue(attrs) { this.info = attrs.info; // an object containing arbitrary extra information this.fixes = attrs.fixes; // expect an array of functions for possible fixes + this.loc = function() { + if (this.coordinates && Array.isArray(this.coordinates) && this.coordinates.length === 2) { + return this.coordinates; + } + if (this.entities.length > 0) { + if (this.entities[0].loc) { + return this.entities[0].loc; + } + } + }; + if (this.fixes) { for (var i=0; i