ADD @vmatch attribute to <tag> element of feature in map_features.xml. Matching tag...
authorSteve Bennett <stevagewp@gmail.com>
Tue, 8 Feb 2011 13:33:57 +0000 (13:33 +0000)
committerSteve Bennett <stevagewp@gmail.com>
Tue, 8 Feb 2011 13:33:57 +0000 (13:33 +0000)
FIX definition of traffic_calming=* and demonstrate the new feature. Previously once you chose an item from the drop down, it wouldn't be recognised as a traffic_calming any more.

Addresses http://trac.openstreetmap.org/ticket/3528

net/systemeD/potlatch2/mapfeatures/Feature.as
net/systemeD/potlatch2/mapfeatures/MapFeatures.as
resources/map_features/roads.xml

index c8ae80f..0dda070 100644 (file)
@@ -40,7 +40,7 @@ package net.systemeD.potlatch2.mapfeatures {
 
                        // parse tags
             for each(var tag:XML in definition.tag) {
-                _tags.push( { k:String(tag.@k), v:String(tag.@v)} );
+                _tags.push( { k:String(tag.@k), v:String(tag.@v), vmatch:String(tag.@vmatch)} );
             }
 
                        // parse 'within'
index eaf140d..e7ce895 100644 (file)
@@ -1,17 +1,11 @@
 package net.systemeD.potlatch2.mapfeatures {
 
-    import flash.events.EventDispatcher;
     import flash.events.Event;
-    import flash.net.URLLoader;
-
-       import flash.system.Security;
-       import flash.net.*;
-
-       import mx.core.UIComponent;
-       import mx.controls.DataGrid;
-
+    import flash.events.EventDispatcher;
+    import flash.net.*;
+    
+    import net.systemeD.halcyon.NestedXMLLoader;
     import net.systemeD.halcyon.connection.*;
-       import net.systemeD.halcyon.NestedXMLLoader;
 
     /** All the information about all available map features that can be selected by the user or matched against entities in the map.
     * The list of map features is populated from an XML file the first time the MapFeatures instance is accessed.
@@ -102,9 +96,16 @@ package net.systemeD.potlatch2.mapfeatures {
                 var match:Boolean = true;
 
                 // check for matching tags
+                // the "match" attribute lets you specify other values that will match this feature
+                // but won't affect the default value assigned. format is "*" or a regex.
                 for each(var tag:Object in feature.tags) {
                     var entityTag:String = entity.getTag(tag.k);
-                    match = entityTag == tag.v || (entityTag != null && tag.v == "*");
+                    if (entityTag == null) { match = false; break; }
+                    match = 
+                        tag.v == entityTag 
+                     || tag.v == "*"
+                     || tag.vmatch == "*"
+                     || tag.vmatch != "" && entityTag.match(new RegExp("^" + tag.vmatch + "$"));
                     if ( !match ) break;
                 }
 
index eaf0bab..a3e2067 100644 (file)
@@ -3,6 +3,7 @@
        Roads\r
        ************************************************************************ -->\r
 \r
+\r
   <feature name="Motorway">\r
     <category>roads</category>\r
     <icon image="features/highway__motorway.png">\r
     <icon image="icons/speed_hump_16.png"/>\r
     <help>http://wiki.openstreetmap.org/wiki/Key:traffic%3Dcalming</help>\r
     <point/>\r
-    <!-- Warning: creates "traffic_calming=*" by default, but it's the best we can do. Steve Bennett-->\r
-    <!--<tag k="traffic_calming" v="*"/>-->\r
-    <tag k="traffic_calming" v="yes"/>\r
+    <tag k="traffic_calming" v="yes" vmatch="*"/>\r
     <input type="choice" key="traffic_calming" name="Obstacle type" category="Traffic calming" presence="onTagMatch">\r
       <choice value="yes" text="Unspecified"/>\r
       <choice value="bump" text="Short bump" description="A sharp speed bump, typically slowing cars to 15 kph or less."/>\r