public static Dictionary <long, Tuple <double, double> > FindNodes(IEnumerable <long> nodeIds, OsmStreamSource source)
        {
            Queue <long> idQueue = new Queue <long>();

            foreach (long id in nodeIds.OrderBy(n => n))
            {
                idQueue.Enqueue(id);
            }

            var nodes = new Dictionary <long, Tuple <double, double> >();

            while (idQueue.Count > 0 && source.MoveNextNode())
            {
                if (source.Current().Id == idQueue.Peek())
                {
                    nodes.Add(idQueue.Dequeue(),
                              new Tuple <double, double>((source.Current() as Node).Latitude.Value,
                                                         (source.Current() as Node).Longitude.Value));
                }
            }
            return(nodes);
        }