Treat entities on addr:interpolation lines as points, not vertices

(closes #3241)
This commit is contained in:
Bryan Housel
2016-07-14 13:00:36 -04:00
parent 5f496f2020
commit 0d8fb87f93
4 changed files with 56 additions and 16 deletions
+9
View File
@@ -51,6 +51,15 @@ _.extend(Node.prototype, {
});
},
isOnAddressLine: function(resolver) {
return resolver.transient(this, 'isOnAddressLine', function() {
return resolver.parentWays(this).filter(function(parent) {
return parent.tags.hasOwnProperty('addr:interpolation') &&
parent.geometry(resolver) === 'line';
}).length > 0;
});
},
asJXON: function(changeset_id) {
var r = {
node: {
+8 -2
View File
@@ -23,8 +23,14 @@ export function presets() {
};
all.match = function(entity, resolver) {
var geometry = entity.geometry(resolver),
geometryMatches = index[geometry],
var geometry = entity.geometry(resolver);
// Treat entities on addr:interpolation lines as points, not vertices (#3241)
if (geometry === 'vertex' && entity.isOnAddressLine(resolver)) {
geometry = 'point';
}
var geometryMatches = index[geometry],
best = -1,
match;
+13 -6
View File
@@ -6,14 +6,21 @@ import { PresetIcon } from './preset_icon';
import { TagReference } from './tag_reference';
export function PresetList(context) {
var event = d3.dispatch('choose'),
var dispatch = d3.dispatch('choose'),
id,
currentPreset,
autofocus = false;
function presetList(selection) {
var geometry = context.geometry(id),
presets = context.presets().matchGeometry(geometry);
var entity = context.entity(id),
geometry = context.geometry(id);
// Treat entities on addr:interpolation lines as points, not vertices (#3241)
if (geometry === 'vertex' && entity.isOnAddressLine(context.graph())) {
geometry = 'point';
}
var presets = context.presets().matchGeometry(geometry);
selection.html('');
@@ -26,7 +33,7 @@ export function PresetList(context) {
if (context.entity(id).isUsed(context.graph())) {
messagewrap.append('button')
.attr('class', 'preset-choose')
.on('click', function() { event.choose(currentPreset); })
.on('click', function() { dispatch.choose(currentPreset); })
.append('span')
.html('►');
} else {
@@ -221,7 +228,7 @@ export function PresetList(context) {
ChangePreset(id, currentPreset, preset),
t('operations.change_tags.annotation'));
event.choose(preset);
dispatch.choose(preset);
};
item.help = function() {
@@ -254,5 +261,5 @@ export function PresetList(context) {
return presetList;
};
return d3.rebind(presetList, event, 'on');
return d3.rebind(presetList, dispatch, 'on');
}