Example #1
0
    /// <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);
        }
    }