private void ReloadMap(object sender, SelectionChangedEventArgs e) { MyMapControl.Map.Layers.Clear(); MyMapControl.Map = _Model.Map; MyMapControl.Refresh(); }
private void ToggleLayers() { MyMapControl.Refresh(); }
private void questTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { if (skipnextrecenter) { skipnextrecenter = false; return; } if (e.NewValue == null) { return; } if (e.NewValue.GetType() != typeof(QuestViewModel)) { return; } Quest selected = ((QuestViewModel)e.NewValue).correspondingQuest; if (selected.Deferred) { questTree.ContextMenu = questTree.Resources["Deferred"] as System.Windows.Controls.ContextMenu; } else { questTree.ContextMenu = questTree.Resources["Undeferred"] as System.Windows.Controls.ContextMenu; } if (selected.DiscoverPrompt == null) { if (CircleLayer != null) { CircleLayer.Enabled = false; circleShownOnLocation = null; } if (currentLocation != ShortNameLookup[selected.World]) { WorldSelectIndex = ShortNames.IndexOf(ShortNameLookup[selected.World]); } return; } if (selected.DiscoverPrompt.DiscoverPosition != null) { if (CircleLayer != null) { CircleLayer.Enabled = true; } if (currentLocation != ShortNameLookup[selected.DiscoverPrompt.DiscoverPosition.World]) { WorldSelectIndex = ShortNames.IndexOf(ShortNameLookup[selected.DiscoverPrompt.DiscoverPosition.World]); } CenterMap(selected.DiscoverPrompt.DiscoverPosition.X, selected.DiscoverPrompt.DiscoverPosition.Y); AddCircleAt(new Mapsui.Geometries.Point(selected.DiscoverPrompt.DiscoverPosition.X, selected.DiscoverPrompt.DiscoverPosition.Y)); MyMapControl.Refresh(); } else { if (CircleLayer != null) { CircleLayer.Enabled = false; circleShownOnLocation = null; } } if (selected.DiscoverPrompt.Info != "") { InfoMessage = selected.DiscoverPrompt.Info; } }
private void LoadMap(string location) { ObservableCollection <MarkerViewModel> tempmarkers = new ObservableCollection <MarkerViewModel>(); MarkerViewModel root; bool worldWasAlreadyLoaded = MarkersPerWorld.ContainsKey(location); if (worldWasAlreadyLoaded) { root = MarkersPerWorld[location]; } else { root = MarkerViewModel.CreateRoot(Path.Combine(appdir, smalliconpath)); MarkersPerWorld.Add(location, root); } currentLocation = location; CurrentConvertor = ConversionLibrary[location]; if (tileLayer != null) { //fixes memory leak in Mapsui tileLayer.AbortFetch(); MyMapControl.Map.Layers.Clear(); } MbTilesTileSource _source = new MbTilesTileSource(new SQLiteConnectionString(PathLibrary[location], false)); tileLayer = new Mapsui.Layers.TileLayerAbort(_source); MyMapControl.Map.Layers.Add(tileLayer); Dictionary <MapPinType, MapPinCollection> worldpindata = mappindata.GetPins(ShortNameLookup[location]); foreach (MapPinType pintype in worldpindata.Keys) { //I want to do this last if (pintype.InternalName == "RoadSign") { continue; } if (worldWasAlreadyLoaded) { MyMapControl.Map.Layers.Add(root.FindChild(pintype.InternalName).AssociatedLayer); continue; } Mapsui.Layers.MemoryLayer _pointlayer = new Mapsui.Layers.MemoryLayer { Style = null }; List <Mapsui.Geometries.Point> _points = new List <Mapsui.Geometries.Point>(); string path = Path.Combine(appdir, largeiconpath, pintype.IconFile); //Load the image if needed if (!IconCache.ContainsKey(path)) { using (FileStream fs = new FileStream(path, FileMode.Open)) { MemoryStream ms = new MemoryStream(); fs.CopyTo(ms); int id = BitmapRegistry.Instance.Register(ms); IconCache[path] = id; } } if (pintype.InternalName.Contains("Quest")) { foreach (MapPin c in worldpindata[pintype].Locations) { //Try to match Pin coords and Quest coords Quest q = progressStatus.getQuestByCoordinates(Convert.ToInt32(c.Location.X), Convert.ToInt32(c.Location.Y)); //If no matching quest found then still display the Pin bool questNotDoneOrNotFound = q == null || !q.Done; if (questNotDoneOrNotFound) { _points.Add(CurrentConvertor.ToWorldSpace(c.Location)); } } } else { foreach (MapPin c in worldpindata[pintype].Locations) { _points.Add(CurrentConvertor.ToWorldSpace(c.Location)); } } _pointlayer.DataSource = new Mapsui.Providers.MemoryProvider(_points); SymbolStyle _style = new SymbolStyle(); _style.BitmapId = IconCache[path]; _pointlayer.Style = _style; _pointlayer.Name = pintype.Name; MyMapControl.Map.Layers.Add(_pointlayer); root.AddChild(new MarkerViewModel(pintype, _pointlayer)); } root.VerifyCheckState(); AddCircleLayer(); //Add label layer last so that it's on top MyMapControl.Map.Layers.Add(GetLabelLayer(worldpindata)); MyMapControl.Map.BackColor = new Color(184, 222, 230); tempmarkers.Add(root); _markers = tempmarkers; RaisePropertyChanged("Markers"); if (RandomPlayersOnMap) { ToggleGwentPlayers(true); } else { MarkerViewModel gw = Markers[0].FindChild("GwentPlayer"); if (gw != null) { gw.IsChecked = false; } } MyMapControl.Refresh(); }