- public override function getDescription():String {
- var desc:String = "";
- var relTags:Object = getTagsHash();
- if ( relTags["type"] ) {
- desc = relTags["type"];
- if ( relTags[desc] )
- desc += " " + relTags[desc];
- }
- if ( relTags["ref"] )
- desc += " " + relTags["ref"];
- if ( relTags["name"] )
- desc += " " + relTags["name"];
- return desc;
- }
+ public override function getDescription():String {
+ var desc:String = "";
+ var relTags:Object = getTagsHash();
+ var named:Boolean = false;
+ if ( relTags["type"] ) {
+ // type=route --> "route"
+ desc = relTags["type"];
+ // type=route, route=bicycle--> "route bicycle"
+ if (relTags[desc]) { desc += " " + relTags[desc]; }
+ }
+ // type=route, route=bicycle, network=ncn, ref=54 -> "route bicycle ncn 54"
+ if ( relTags["network"]) { desc += " " + relTags["network"]; }
+ if ( relTags["ref"] ) { desc += " " + relTags["ref"]; named=true; }
+ if ( relTags["name"] ) { desc += " " + relTags["name"]; named=true; }
+ // handle node->node routes
+ if ( !named && relTags["type"] && relTags["type"]=="route" ) {
+ var firstName:String=getSignificantName(getFirstMember().entity);
+ var lastName:String=getSignificantName(getLastMember().entity);
+ if ((firstName+lastName)!='') desc+=" "+firstName+"-"+lastName;
+ }
+ return desc;
+ }
+
+ private function getSignificantName(entity:Entity):String {
+ if (!entity.loaded || (entity is Relation)) return '';
+
+ var t:String;
+ if (entity is Way) {
+ t=getSignificantName(Way(entity).getFirstNode());
+ if (t=='') t=getSignificantName(Way(entity).getLastNode());
+ return t;
+ }
+ t=Node(entity).getTag('name');
+ if (!t) t=Node(entity).getTagByRegex(/ref$/);
+ return t ? t : '';
+ }