Show location of selected Note in Measurement Panel

(re: #5158)
This commit is contained in:
Bryan Housel
2018-08-09 23:25:50 -04:00
parent f8f1c1f541
commit 9f33ca9a01
3 changed files with 39 additions and 27 deletions
+1
View File
@@ -373,6 +373,7 @@ en:
line: line
area: area
relation: relation
note: note
geocoder:
search: Search worldwide...
no_results_visible: No results in visible map area
+2 -1
View File
@@ -460,7 +460,8 @@
"vertex": "vertex",
"line": "line",
"area": "area",
"relation": "relation"
"relation": "relation",
"note": "note"
},
"geocoder": {
"search": "Search worldwide...",
+36 -26
View File
@@ -11,7 +11,7 @@ import { t } from '../../util/locale';
import { displayArea, displayLength, decimalCoordinatePair, dmsCoordinatePair } from '../../util/units';
import { geoExtent } from '../../geo';
import { utilDetect } from '../../util/detect';
import { services } from '../../services';
export function uiPanelMeasurement(context) {
@@ -43,21 +43,40 @@ export function uiPanelMeasurement(context) {
return result;
}
function nodeCount(feature) {
if (feature.type === 'LineString') return feature.coordinates.length;
if (feature.type === 'Polygon') {
return feature.coordinates[0].length - 1;
}
if (feature.type === 'Polygon') return feature.coordinates[0].length - 1;
}
function redraw(selection) {
var resolver = context.graph();
var selected = _filter(context.selectedIDs(), function(e) { return context.hasEntity(e); });
var selectedNoteID = context.selectedNoteID();
var osm = services.osm;
var selected, center, entity, note, geometry;
if (selectedNoteID && osm) { // selected 1 note
selected = [ t('note.note') + ' ' + selectedNoteID ];
note = osm.getNote(selectedNoteID);
center = note.loc;
geometry = 'note';
} else { // selected 1..n entities
var extent = geoExtent();
selected = _filter(context.selectedIDs(), function(e) { return context.hasEntity(e); });
if (selected.length) {
for (var i = 0; i < selected.length; i++) {
entity = context.entity(selected[i]);
extent._extend(entity.extent(resolver));
}
center = extent.center();
geometry = entity.geometry(resolver);
}
}
var singular = selected.length === 1 ? selected[0] : null;
var extent = geoExtent();
var entity;
selection.html('');
@@ -68,19 +87,12 @@ export function uiPanelMeasurement(context) {
if (!selected.length) return;
var center;
for (var i = 0; i < selected.length; i++) {
entity = context.entity(selected[i]);
extent._extend(entity.extent(resolver));
}
center = extent.center();
var list = selection
.append('ul');
var coordItem;
// multiple features, just display extent center..
// multiple selected features, just display extent center..
if (!singular) {
coordItem = list
.append('li')
@@ -92,16 +104,13 @@ export function uiPanelMeasurement(context) {
return;
}
// single feature, display details..
if (!entity) return;
var geometry = entity.geometry(resolver);
// single selected feature, display details..
if (geometry === 'line' || geometry === 'area') {
var closed = (entity.type === 'relation') || (entity.isClosed() && !entity.isDegenerate()),
feature = entity.asGeoJSON(resolver),
length = radiansToMeters(d3_geoLength(toLineString(feature))),
lengthLabel = t('info_panels.measurement.' + (closed ? 'perimeter' : 'length')),
centroid = d3_geoCentroid(feature);
var closed = (entity.type === 'relation') || (entity.isClosed() && !entity.isDegenerate());
var feature = entity.asGeoJSON(resolver);
var length = radiansToMeters(d3_geoLength(toLineString(feature)));
var lengthLabel = t('info_panels.measurement.' + (closed ? 'perimeter' : 'length'));
var centroid = d3_geoCentroid(feature);
list
.append('li')
@@ -157,7 +166,8 @@ export function uiPanelMeasurement(context) {
});
} else {
var centerLabel = t('info_panels.measurement.' + (entity.type === 'node' ? 'location' : 'center'));
var centerLabel = t('info_panels.measurement.' +
(note || entity.type === 'node' ? 'location' : 'center'));
list
.append('li')