/// <summary> /// Get data from the response Open Street Map Overpass API. /// </summary> /// <param name="response">Response from Overpass API</param> /// <param name="nodes">Dictionary of nodes</param> /// <param name="ways">List of ways</param> /// <param name="relations">List of relations</param> public static void ParseOSMResponse(string response, out Dictionary <string, OnlineMapsOSMNode> nodes, out List <OnlineMapsOSMWay> ways, out List <OnlineMapsOSMRelation> relations) { nodes = new Dictionary <string, OnlineMapsOSMNode>(64); ways = new List <OnlineMapsOSMWay>(64); relations = new List <OnlineMapsOSMRelation>(64); try { OnlineMapsXML xml = OnlineMapsXML.Load(response); foreach (OnlineMapsXML node in xml) { if (node.name == "node") { OnlineMapsOSMNode osmNode = new OnlineMapsOSMNode(node); nodes.Add(osmNode.id, osmNode); } else if (node.name == "way") { ways.Add(new OnlineMapsOSMWay(node)); } else if (node.name == "relation") { relations.Add(new OnlineMapsOSMRelation(node)); } } } catch { Debug.Log(response); } }
/// <summary> /// Returns a list of nodes related to that way. /// </summary> /// <param name="nodes">General list of nodes</param> /// <returns>List of nodes related to that way</returns> public List <OnlineMapsOSMNode> GetNodes(List <OnlineMapsOSMNode> nodes) { List <OnlineMapsOSMNode> _nodes = new List <OnlineMapsOSMNode>(); foreach (string nRef in nodeRefs) { OnlineMapsOSMNode node = nodes.FirstOrDefault(n => n.id == nRef); if (node != null) { _nodes.Add(node); } } return(_nodes); }
/// <summary> /// Get data from the response Open Street Map Overpass API. /// </summary> /// <param name="response">Response from Overpass API</param> /// <param name="nodes">Dictionary of nodes</param> /// <param name="ways">List of ways</param> /// <param name="relations">List of relations</param> public static void ParseOSMResponse(string response, out Dictionary<string, OnlineMapsOSMNode> nodes, out List<OnlineMapsOSMWay> ways, out List<OnlineMapsOSMRelation> relations) { nodes = new Dictionary<string, OnlineMapsOSMNode>(); ways = new List<OnlineMapsOSMWay>(); relations = new List<OnlineMapsOSMRelation>(); try { OnlineMapsXML xml = OnlineMapsXML.Load(response); foreach (OnlineMapsXML node in xml) { if (node.name == "node") { OnlineMapsOSMNode osmNode = new OnlineMapsOSMNode(node); nodes.Add(osmNode.id, osmNode); } else if (node.name == "way") ways.Add(new OnlineMapsOSMWay(node)); else if (node.name == "relation") relations.Add(new OnlineMapsOSMRelation(node)); } } catch { Debug.Log(response); } }