@@ -3,10 +3,10 @@ package de.westnordost.streetcomplete.quests.max_speed
33import de.westnordost.streetcomplete.R
44import de.westnordost.streetcomplete.data.osm.geometry.ElementGeometry
55import de.westnordost.streetcomplete.data.osm.mapdata.Element
6+ import de.westnordost.streetcomplete.data.osm.mapdata.LatLon
67import de.westnordost.streetcomplete.data.osm.mapdata.MapDataWithGeometry
78import de.westnordost.streetcomplete.data.osm.mapdata.filter
89import de.westnordost.streetcomplete.data.osm.osmquests.OsmFilterQuestType
9- import de.westnordost.streetcomplete.data.quest.AllCountriesExcept
1010import de.westnordost.streetcomplete.data.quest.AndroidQuest
1111import de.westnordost.streetcomplete.data.user.achievements.EditTypeAchievement.CAR
1212import de.westnordost.streetcomplete.osm.Tags
@@ -15,7 +15,9 @@ import de.westnordost.streetcomplete.osm.surface.UNPAVED_SURFACES
1515import de.westnordost.streetcomplete.resources.*
1616import de.westnordost.streetcomplete.util.ktx.toYesNo
1717
18- class AddMaxSpeed : OsmFilterQuestType <MaxSpeedAnswer >(), AndroidQuest {
18+ class AddMaxSpeed (
19+ private val getCountryOrSubdivisionCode : (LatLon ) -> String?
20+ ) : OsmFilterQuestType<MaxSpeedAnswer>(), AndroidQuest {
1921
2022 override val elementFilter = """
2123 ways with
@@ -24,6 +26,7 @@ class AddMaxSpeed : OsmFilterQuestType<MaxSpeedAnswer>(), AndroidQuest {
2426 and ${MAX_SPEED_TYPE_KEYS .joinToString(" and " ) { " !$it " }}
2527 and surface !~ ${UNPAVED_SURFACES .joinToString(" |" )}
2628 and cyclestreet != yes and bicycle_road != yes
29+ and living_street != yes
2730 and motor_vehicle !~ private|no
2831 and vehicle !~ private|no
2932 and area != yes
@@ -34,8 +37,6 @@ class AddMaxSpeed : OsmFilterQuestType<MaxSpeedAnswer>(), AndroidQuest {
3437 override val icon = R .drawable.quest_max_speed
3538 override val title = Res .string.quest_maxspeed_title_short2
3639 override val hasMarkersAtEnds = true
37- // see #813: US has different rules for each different state which need to be respected
38- override val enabledInCountries = AllCountriesExcept (" US" )
3940 override val achievements = listOf (CAR )
4041 override val defaultDisabledMessage = Res .string.default_disabled_msg_maxspeed
4142
@@ -45,27 +46,6 @@ class AddMaxSpeed : OsmFilterQuestType<MaxSpeedAnswer>(), AndroidQuest {
4546 override fun createForm () = AddMaxSpeedForm ()
4647
4748 override fun applyAnswerTo (answer : MaxSpeedAnswer , tags : Tags , geometry : ElementGeometry , timestampEdited : Long ) {
48- when (answer) {
49- is MaxSpeedSign -> {
50- tags[" maxspeed" ] = answer.value.toString()
51- tags[" maxspeed:type" ] = " sign"
52- }
53- is MaxSpeedZone -> {
54- tags[" maxspeed" ] = answer.value.toString()
55- tags[" maxspeed:type" ] = answer.countryCode + " :" + answer.roadType
56- }
57- is AdvisorySpeedSign -> {
58- tags[" maxspeed:advisory" ] = answer.value.toString()
59- tags[" maxspeed:type:advisory" ] = " sign"
60- }
61- is IsLivingStreet -> {
62- tags[" highway" ] = " living_street"
63- }
64- is ImplicitMaxSpeed -> {
65- tags[" maxspeed:type" ] = answer.countryCode + " :" + answer.roadType
66- // Lit is either already set or has been answered by the user, so this wouldn't change the value of the lit tag
67- answer.lit?.let { tags[" lit" ] = it.toYesNo() }
68- }
69- }
49+ answer.applyTo(tags, getCountryOrSubdivisionCode(geometry.center) ? : " ??" )
7050 }
7151}
0 commit comments