public void metro_data() { /* first get stops */ Task.Factory.StartNew(async() => { Uri u = new System.Uri("https://services1.arcgis.com/gOY38HDnFUYPDony/ArcGIS/rest/services/la_busstops1217/FeatureServer/1"); var agsl_stop = new ServiceFeatureTable(u); await agsl_stop.LoadAsync(); this.RunOnUiThread( () => { var stopsLayer = new Esri.ArcGISRuntime.Mapping.FeatureLayer(agsl_stop); var stopmark = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Circle, System.Drawing.Color.Yellow, 4f); stopsLayer.Renderer = new SimpleRenderer(stopmark); MySceneView.Scene.OperationalLayers.Add(stopsLayer); }); }); /* then get vehicles */ WebClient client = new WebClient(); var wgs84 = MySceneView.Scene.SpatialReference; metro = new GraphicsOverlay(); var pmark = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Circle, System.Drawing.Color.IndianRed, 4f); metro.Renderer = new SimpleRenderer(pmark); metro.SceneProperties.SurfacePlacement = SurfacePlacement.Draped; Task.Factory.StartNew(async() => { while (true) { string downloadString = client.DownloadString("http://api.metro.net/agencies/lametro/vehicles/"); MetroJSON res = JsonConvert.DeserializeObject <MetroJSON>(downloadString); metro.Graphics.Clear(); foreach (MetroInnerJSON vehicle in res.items) { var ploc = new MapPoint(vehicle.longitude, vehicle.latitude, 0, wgs84); var ptest = new Graphic(ploc); metro.Graphics.Add(ptest); } await Task.Delay(2300); } }); MySceneView.GraphicsOverlays.Add(metro); }
public void metro_data() { /* first get stops */ Task.Factory.StartNew(async() => { Uri u = new System.Uri("https://services1.arcgis.com/gOY38HDnFUYPDony/ArcGIS/rest/services/la_busstops1217/FeatureServer/1"); var agsl_stop = new ServiceFeatureTable(u); await agsl_stop.LoadAsync(); Application.Current.Dispatcher.Invoke( () => { var stopsLayer = new Esri.ArcGISRuntime.Mapping.FeatureLayer(agsl_stop); MySceneView.Scene.OperationalLayers.Add(stopsLayer); }); Debug.WriteLine("busstop: " + agsl_stop.LoadStatus); }); /* then get vehicles */ WebClient client = new WebClient(); var wgs84 = MySceneView.Scene.SpatialReference; metro = new GraphicsOverlay(); metro.SceneProperties.SurfacePlacement = SurfacePlacement.Draped; Task.Factory.StartNew(async() => { while (true) { string downloadString = client.DownloadString("http://api.metro.net/agencies/lametro/vehicles/"); dynamic res = JsonConvert.DeserializeObject(downloadString); metro.Graphics.Clear(); foreach (dynamic vehicle in res.items) { var ploc = new MapPoint(vehicle.longitude.Value, vehicle.latitude.Value, 0, wgs84); var pmark = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Circle, Colors.IndianRed, 8); var ptest = new Graphic(ploc, pmark); metro.Graphics.Add(ptest); } await Task.Delay(1000); } }); MySceneView.GraphicsOverlays.Add(metro); }