我正在嘗試更改我的 Xamarin Forms 應用程序(使用 Mapsui 和 Prism)中的 MapView,因為我需要單獨的視圖來存儲 Pins。第一個 MapView(我們稱之為default)用于顯示列表中的所有引腳。第二個 MapView ( history) 用于顯示新的圖釘,這些圖釘在離開頁面時被移除。我必須Dictionary存儲我的 MapViews 才能輕松訪問我想要的任何視圖。每個創建的 MapView 都有相同的 Map 實例。我想從which should hide pins that added in view更改default為。historydefault我用這個改變觀點:public void ChangeView(string name) { var prev = MapView; loggerService.Info($"Pins: {prev.Pins.Count}"); MapView = GetView(name); // Current MapView in XAML, returns instance of MapView loggerService.Info($"New view pins: {MapView.Pins.Count}"); Task.Factory.StartNew(() => { Task.Delay(2000).Wait(); loggerService.Info($"View pins: {MapView.Pins.Count}"); }); MapView.Refresh(); }帶有日志的額外代碼用于調試目的 - 它顯示正確的值(prev pins = 7,new pins = 0,view pins = 0)。我添加了history不帶縮放按鈕的視圖,以確保它正在發生變化——而且確實發生了變化(所以我認為沒有必要發布 XAML)。我應該如何更改 MapView 以在導航到歷史記錄時隱藏圖釘并在切換回默認視圖時顯示它們?或者是否有更好的方法來“分組”Pin 并根據名稱隱藏/顯示它們?更新 我認為這可能很重要:public Pin AddMarker(Position point) { var pin = new Pin(MapView) { Label = "PinType.Pin", Position = point, Type = PinType.Pin, Transparency = 0.5f, Color = Xamarin.Forms.Color.FromRgb(2, 144, 210), Scale = 0.5f, }; MapView.Pins.Add(pin); return pin; }這是我添加 Pin 圖以查看的方式。這個和上面的MapView是一樣的(所有代碼都來自于MapService)。
1 回答

翻過高山走不出你
TA貢獻1875條經驗 獲得超3個贊
一些選項
也許您可以將 Pins 的 IsVisible 屬性綁定到視圖中的 HistoryMode 字段。我自己從來沒有用過這個。
使用一些較低級別的功能。喜歡
為默認和歷史使用單獨的圖層,并在需要時啟用/禁用它們。您可能需要將 WGS84(gps 坐標)轉換為 SphericalMercator。https://mapsui.com/api/Mapsui.Projection.SphericalMercator.html?q=sphericalmercator
使用主題樣式。它有一種方法,可用于指定您需要的任何樣式(可見/顏色/符號)和特征屬性。https://mapsui.com/api/Mapsui.Styles.Thematics.ThemeStyle.html?q=themestyle
對于較低級別的功能,您可能需要示例來幫助您上路:https ://mapsui.com/documentation/samples.html
- 1 回答
- 0 關注
- 111 瀏覽
添加回答
舉報
0/150
提交
取消