void GenerateItems()
        {
            ActiveItem = null;
            SolvedItems.Clear();
            this.isLoading   = true;
            AllowSaveActions = false;
            IEnumerable <MapPathInfo>      pathInfos = this.puzzleGenerator.GeneratePathInfos();
            ObservableCollection <MapItem> items     = new ObservableCollection <MapItem>();

            foreach (MapPathInfo pathInfo in pathInfos)
            {
                MapPath copiedPath = (MapPath)pathInfo.Path.Clone();
                copiedPath.Attributes.Add(new MapItemAttribute()
                {
                    Name = "RealLocation", Type = typeof(GeoPoint), Value = pathInfo.RealLocation
                });
                Vector delta = CoordPointToScreenPoint(pathInfo.GameCenter) - CoordPointToScreenPoint(pathInfo.RealCenter);
                ActiveItems = new ObservableCollection <MapItem>()
                {
                    copiedPath
                };
                TranslateItemsCommand.Execute(delta);
                items.Add(copiedPath);
            }
            Items = items;
            ZoomToRegion.Execute(new object[] { new GeoPoint(15, -180), new GeoPoint(-62, -45), 0.05 });
            AllowSaveActions = true;
            this.isLoading   = false;
        }
 void MoveItemToSolveLayer(MapPath mapPath)
 {
     Items.Remove(mapPath);
     SolvedItems.Add(mapPath);
     ActiveItem = mapPath;
     if (Items.Count == 0)
     {
         ShowWinMessage();
     }
 }