Bicycles allowed on oneways except motorways. Implements changes from
pull request (issue 54)
This commit is contained in:
		
							parent
							
								
									f5226b2228
								
							
						
					
					
						commit
						90502a0c15
					
				| @ -98,7 +98,6 @@ public: | ||||
|         std::string highway( w.keyVals.Find("highway") ); | ||||
|         std::string name( w.keyVals.Find("name") ); | ||||
|         std::string ref( w.keyVals.Find("ref")); | ||||
|         std::string oneway( w.keyVals.Find("oneway")); | ||||
|         std::string junction( w.keyVals.Find("junction") ); | ||||
|         std::string route( w.keyVals.Find("route") ); | ||||
|         int maxspeed( atoi(w.keyVals.Find("maxspeed").c_str()) ); | ||||
| @ -106,6 +105,9 @@ public: | ||||
|         std::string accessTag( w.keyVals.Find(settings.accessTag) ); | ||||
|         std::string man_made( w.keyVals.Find("man_made") ); | ||||
|         std::string barrier( w.keyVals.Find("barrier") ); | ||||
|         std::string oneway( w.keyVals.Find("oneway")); | ||||
|         std::string onewayClass( w.keyVals.Find("oneway:"+settings.accessTag)); | ||||
|         std::string cycleway( w.keyVals.Find("cycleway")); | ||||
| 
 | ||||
|         //Save the name of the way if it has one, ref has precedence over name tag.
 | ||||
|         if ( 0 < ref.length() ) | ||||
| @ -156,24 +158,29 @@ public: | ||||
|                 return true; | ||||
|             } | ||||
| 
 | ||||
|             //Let's process oneway property, if speed profile obeys to it
 | ||||
|             if(oneway != "no" && oneway != "false" && oneway != "0" && settings.obeyOneways) { | ||||
|                 //if oneway tag is in forward direction or if actually roundabout
 | ||||
|                 if(junction == "roundabout" || oneway == "yes" || oneway == "true" || oneway == "1") { | ||||
|             if( settings.obeyOneways ) { | ||||
|                 if( oneway == "no" || oneway == "0" || oneway == "false" || onewayClass == "no" || onewayClass == "0" || onewayClass == "false" || ((settings.accessTag == "bicycle") && (cycleway == "opposite" || cycleway == "opposite_track" || cycleway == "opposite_lane")) ) { | ||||
|                     w.direction = _Way::bidirectional; | ||||
|                 } else if( oneway == "-1") { | ||||
|                     w.direction  = _Way::opposite; | ||||
|                     std::reverse( w.path.begin(), w.path.end() ); | ||||
|                 } | ||||
|                 else if( oneway == "yes" || oneway == "1" || oneway == "true" || onewayClass == "yes" || onewayClass == "1" || onewayClass == "true" || junction == "roundabout" || highway == "motorway_link" || highway == "motorway" ) { | ||||
|                     w.direction = _Way::oneway; | ||||
|                 } else { | ||||
|                     if( oneway == "-1") | ||||
|                         w.direction  = _Way::opposite; | ||||
|                     w.direction = _Way::bidirectional; | ||||
|                 } | ||||
|             } else { | ||||
|                 w.direction = _Way::bidirectional; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if ( w.useful && w.access && (1 < w.path.size()) ) { //Only true if the way is specified by the speed profile
 | ||||
|             //TODO: type is not set, perhaps use a bimap'ed speed profile to do set the type correctly?
 | ||||
|             w.type = settings.GetHighwayTypeID(highway); | ||||
|            if(0 > w.type) { | ||||
|                ERR("Resolved highway " << highway << " to " << w.type); | ||||
|            } | ||||
|             if(0 > w.type) { | ||||
|                 ERR("Resolved highway " << highway << " to " << w.type); | ||||
|             } | ||||
| 
 | ||||
|             //Get the unique identifier for the street name
 | ||||
|             const StringMap::const_iterator strit = stringMap->find(w.name); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user