namespace SIAW_Geospatial.ViewModels { public class Map_ViewModel : Base_ViewModel { private static ESRI.ArcGIS.Client.Projection.WebMercator mercator = new ESRI.ArcGIS.Client.Projection.WebMercator(); private Map_Model mapModel; public Map_ViewModel() { //models mapModel = new Map_Model(this); updateMapCmd = new RelayCommand(updateMap) { IsEnabled = true }; mapModel.getAirportData(); //populate lists } private ObservableCollection<AirportDataServiceReference.July2010RegScheduledFlightDelaysByOrigin> filteredAirportData; public ObservableCollection<AirportDataServiceReference.July2010RegScheduledFlightDelaysByOrigin> FilteredAirportData { get { return filteredAirportData; } set { filteredAirportData = value; RaisePropertyChanged("FilteredAirportData"); //set the map setGraphicsList(); } } //private GraphicCollection myGraphicsList; //public GraphicCollection MyGraphicsList private ObservableCollection<Graphic> myGraphicsList; public ObservableCollection<Graphic> MyGraphicsList { get { return myGraphicsList; } set { myGraphicsList = value; RaisePropertyChanged("MyGraphicsList"); } } private readonly ICommand updateMapCmd; public ICommand UpdateMapCmd { get { return updateMapCmd; } } private void updateMap() { var query = from c in mapModel.AirportData select c; # region filters if (AirlineListSelectedIndex > 0) //0 is All { string airline = AirlineList.ElementAt(AirlineListSelectedIndex); query = query.Where(c => c.Airline.Equals(AirlineList.ElementAt(AirlineListSelectedIndex))); } if (DestinationListSelectedIndex > 0) //0 is All { query = query.Where(c => c.Destination.Equals(DestinationList.ElementAt(DestinationListSelectedIndex))); } if (ScheduledOperatorSelectedIndex > 0) //0 is No selection (i.e. don't filter by this) { if (ScheduledOperatorSelectedIndex == (int)(OperatorTypes.GreaterThan)) query = query.Where(c => c.Operations.Value > NumScheduledFlights); else if (ScheduledOperatorSelectedIndex == (int)(OperatorTypes.EqualTo)) query = query.Where(c => c.Operations.Value.Equals(NumScheduledFlights)); else if (ScheduledOperatorSelectedIndex == (int)(OperatorTypes.LessThan)) query = query.Where(c => c.Operations.Value < NumScheduledFlights); } if (CancelledOperatorSelectedIndex > 0) //0 is No selection (i.e. don't filter by this) { if (CancelledOperatorSelectedIndex == (int)(OperatorTypes.GreaterThan)) query = query.Where(c => c.No_Canceled.Value > NumCancelledFlights); else if (CancelledOperatorSelectedIndex == (int)(OperatorTypes.EqualTo)) query = query.Where(c => c.No_Canceled.Value.Equals(NumCancelledFlights)); else if (CancelledOperatorSelectedIndex == (int)(OperatorTypes.LessThan)) query = query.Where(c => c.No_Canceled.Value < NumCancelledFlights); } # endregion filters //convert to an observable collection ObservableCollection<AirportDataServiceReference.July2010RegScheduledFlightDelaysByOrigin> tmp = new ObservableCollection<AirportDataServiceReference.July2010RegScheduledFlightDelaysByOrigin>(); foreach (AirportDataServiceReference.July2010RegScheduledFlightDelaysByOrigin data in query) { tmp.Add(data); } FilteredAirportData = tmp; } public void setGraphicsList() { //GraphicCollection glist = new GraphicCollection(); ObservableCollection<Graphic> glist = new ObservableCollection<Graphic>(); SpatialReference sref = new SpatialReference(4326); SolidColorBrush pointColor; foreach (AirportDataServiceReference.July2010RegScheduledFlightDelaysByOrigin data in FilteredAirportData) { //get the right color based on the percent of cancelled flights if (data.Percent_Canceled < 25) pointColor = new SolidColorBrush(Colors.Green); else if ((25 <= data.Percent_Canceled) && (data.Percent_Canceled < 75)) pointColor = new SolidColorBrush(Colors.Yellow); else pointColor = new SolidColorBrush(Colors.Red); Graphic g = new Graphic() { Geometry = new MapPoint((double)data.Longitude, (double)data.Latitude, sref) }; g.Symbol = new SimpleMarkerSymbol() { Color = pointColor, Size = 18, Style = SimpleMarkerSymbol.SimpleMarkerStyle.Circle }; //mouse over data g.Attributes.Add("OriginCity", "Origin City: " + data.City); g.Attributes.Add("Destination", "Destination Airport: " + data.Destination); g.Attributes.Add("PercentCanceled", "Percent of flights Canceled: " + data.Percent_Canceled); //g.Attributes.Add("Lat", "Lat: " + data.Latitude); //g.Attributes.Add("Lon", "Lon: " + data.Longitude); glist.Add(g); } MyGraphicsList = new ObservableCollection<Graphic>(glist); } } }
namespace SIAW_Geospatial.Models { public class Map_Model : Base_Model { private AirportDataServiceReference.AirportDataServiceClient airportDataServiceClient; private ViewModels.Map_ViewModel map_vm; public Map_Model(ViewModels.Map_ViewModel vm) { map_vm = vm; airportDataServiceClient = new AirportDataServiceReference.AirportDataServiceClient(); airportDataServiceClient.GetAirportDataCompleted += new EventHandler<AirportDataServiceReference.GetAirportDataCompletedEventArgs>(airportDataServiceClient_GetAirportDataCompleted); } void airportDataServiceClient_GetAirportDataCompleted(object sender, AirportDataServiceReference.GetAirportDataCompletedEventArgs e) { //set the combo boxes AirportData = e.Result; } public void getAirportData() { airportDataServiceClient.GetAirportDataAsync(); } private ObservableCollection<AirportDataServiceReference.July2010RegScheduledFlightDelaysByOrigin> airportData; public ObservableCollection<AirportDataServiceReference.July2010RegScheduledFlightDelaysByOrigin> AirportData { get { return airportData; } set { airportData = value; RaisePropertyChanged("AirportData"); //to start, set the filtered data to the whole set map_vm.FilteredAirportData = airportData; } } } }
<UserControl x:Class="ArcGISSilverlightSDK.UsingGraphicsSource" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:esri="http://schemas.esri.com/arcgis/client/2009" xmlns:local="clr-namespace:ArcGISSilverlightSDK" > <Grid x:Name="LayoutRoot" Background="White"> <Grid.Resources> <local:Customers x:Key="customers" /> </Grid.Resources> <esri:Map x:Name="MyMap" MouseClick="MyMap_OnMouseClick"> <esri:ArcGISTiledMapServiceLayer Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer" /> <esri:GraphicsLayer ID="MyGraphicsLayer" GraphicsSource="{Binding Source={StaticResource customers}, Path=MyGraphicsList}" /> </esri:Map> </Grid> </UserControl>
using ESRI.ArcGIS.Client; using ESRI.ArcGIS.Client.Geometry; using ESRI.ArcGIS.Client.Symbols; using System; using System.ComponentModel; using System.Windows.Controls; using System.Windows.Media; namespace ArcGISSilverlightSDK { public partial class UsingGraphicsSource : UserControl { public UsingGraphicsSource() { InitializeComponent(); } private void MyMap_OnMouseClick(object sender, ESRI.ArcGIS.Client.Map.MouseEventArgs e) { var customer = LayoutRoot.Resources["customers"] as Customers; customer.MyGraphicsList = Customers.CreateNewGraphicCollection(); } } public class Customers : INotifyPropertyChanged { private static readonly ESRI.ArcGIS.Client.Projection.WebMercator mercator = new ESRI.ArcGIS.Client.Projection.WebMercator(); public Customers() { MyGraphicsList= CreateNewGraphicCollection(); } private GraphicCollection _myGraphicsList; public GraphicCollection MyGraphicsList { get { return _myGraphicsList; } set { _myGraphicsList = value; RaisePropertyChanged("MyGraphicsList"); } } public event PropertyChangedEventHandler PropertyChanged; protected void RaisePropertyChanged(string prop) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(prop)); } } internal static GraphicCollection CreateNewGraphicCollection() { var graphicCollection = new GraphicCollection(); var random = new Random(); for (int i = 0; i < 10; i++) { var g = new Graphic { Geometry = mercator.FromGeographic(new MapPoint(random.Next(-180, 180), random.Next(-90, 90))), Symbol = new SimpleMarkerSymbol { Color = new SolidColorBrush(Color.FromArgb(255, (byte)random.Next(0, 255), (byte)random.Next(0, 255), (byte)random.Next(0, 255))), Size = 28 } }; graphicCollection.Add(g); } return graphicCollection; } } }
Graphics="{Binding Source={StaticResource MappingSource}, Path=MappingItems, Mode=TwoWay, Converter={StaticResource mappingsConverter}}"
Binding binding = new Binding("Selected"); binding.Source = mappingItem; binding.Mode = BindingMode.TwoWay; BindingOperations.SetBinding(graphic, Graphic.SelectedProperty, binding);
xmlns:local="clr-namespace:BindableGraphics"> <UserControl.Resources> <esri:SimpleRenderer x:Key="MyBlueRenderer"> <esri:SimpleRenderer.Symbol> <esri:SimpleMarkerSymbol Color="Blue" Size="10" Style="Circle"/> </esri:SimpleRenderer.Symbol> </esri:SimpleRenderer> <local:GraphicsSource x:Key="MyGraphicSource"/> </UserControl.Resources> <Grid x:Name="LayoutRoot" Background="White"> <esri:Map x:Name="MyMap"> <esri:ArcGISTiledMapServiceLayer Url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" /> <esri:GraphicsLayer ID="MyGraphicsLayer" Graphics="{Binding Source={StaticResource MyGraphicSource}, Path=Graphics}" Renderer="{StaticResource MyBlueRenderer}"/> </esri:Map> </Grid>
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.