Пример #1
0
        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);
        }
Пример #2
0
        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);
        }