Opened 10 years ago
Last modified 3 years ago
#11349 new enhancement
addr:street autocompletion is broken
Reported by: | daganzdaanda | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Core | Version: | tested |
Keywords: | autocompletion address street name | Cc: |
Description
Hi,
in my opinion, the auto-completion for addr:street suggests too many "names".
It would be better if it would only take values from addr:street and names from highway-objects into account.
Would that be possible?
Attachments (0)
Change History (12)
comment:1 by , 7 years ago
comment:2 by , 4 years ago
Summary: | addr:street autocompletion should be more picky about suggestions → addr:street autocompletion is broken |
---|---|
Type: | enhancement → defect |
After finding https://josm.openstreetmap.de/ticket/6306 it looks as if this already was working once. Now it's not working any more, so I changed the ticket to "defect" and changed the name accordingly.
comment:3 by , 4 years ago
To reproduce:
Make a new node in a city center. Bring up the "add tag" box (with Alt-A). Type addr:street for the key and switch to the value field. If you press the down arrow without typing anything, you'll get a huge list of names, most of which are not Street names in the vincinity. If you type a letter, the autocomplete options are filtered, but the choices are always from anything that has a "name" tag.
Maybe it has to do with caching, too: I started JOSM and downloaded a small part of a city center. The autocomplete list seems to contain many more names than I believe are in that area. So it may be some leftovers from previous mapping sessions in the cache?? But nevertheless, the names are clearly not only from streets as they should be.
comment:4 by , 4 years ago
OK, I found that disabling the "name suggestion index" preset removes a lot of the wrong entries from the addr:street autocompletion. Now, I only see names that are existing in the downloaded area, but there are still all the names of the shops, doctors, offices etc included.
comment:5 by , 4 years ago
Keywords: | address street name added |
---|---|
Type: | defect → enhancement |
comment:6 by , 4 years ago
I think r4300 claims that only street names are used for auto completion, but that really doesn't seem to work. If offers all matching names.
comment:7 by , 4 years ago
Hm, looking at the discussion and the two patches in #6306, maybe it was working at first only with "name" values from streets and "addr:street" values, and with the second patch which was trying to fix #5804 it opened the search to all names??
https://josm.openstreetmap.de/attachment/ticket/6306/6306.patch
vs
https://josm.openstreetmap.de/attachment/ticket/6306/6306_v2.patch
The main difference I can see is in "src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java"
static List<String> getAutocompletionKeys(String key) { if ("name".equals(key) || "addr:street".equals(key)) { return Arrays.asList("addr:street", "name"); } else { return Arrays.asList(key); } }
The original patch only has
if ("addr:street".equals(key)) {
Could this be to blame?
And why is the autocomplete accessing the list of names from the "Name suggestion index" plugin?
comment:8 by , 4 years ago
No, I think the problem is that all all name values are used, not only those of objects with a highway=*
tag. No idea where this additional filtering could be done.
comment:9 by , 4 years ago
Yes, I had the same impression looking at r4300. There is no filter for containing additional tags/keys.
Would be a useful filter, also for tagging presets.
comment:11 by , 3 years ago
The AutoCompletionManager
only caches keys and their values but doesn't keep any records about key 'proximity'. So a query like: give me all values of key name
on primitives that also have key highway
cannot be satisfied by the AutoCompletionManager. OTOH storing all that information in the cache might easily degrade cache performance both in size and speed.
A different approach might work better: add an attribute autocomplete_template
to the preset item, that uses the template engine and its syntax to find additional autocompletion values. On addr:street
you would put:
autocomplete_template="!{(highway:) (name:) inview '{name}'}"
comment:12 by , 3 years ago
+1, for the new attribute
inview
is nice but I sometimes need a bigger radius while zoomed in. Setting an explicit radius/bbox would be nice.
Hi again,
does anybody know if this is possible? If it's too complicated to do, then let's close the ticket.