private void Map1_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeoUnit.Meter;
            Map1.UseOpenStreetMapAsBaseMap();

            ShapefileSource dataSource = new ShapefileSource("SampleData/countries-900913.shp");

            dataSource.Open();
            feature1 = dataSource.GetFeatureById("1", RequireColumnsType.None);
            feature2 = dataSource.GetFeatureById("10", RequireColumnsType.None);

            MemoryLayer highlightLayer = new MemoryLayer();

            highlightLayer.Features.Add(feature1);
            highlightLayer.Features.Add(feature2);
            highlightLayer.Styles.Add(new FillStyle(GeoColor.FromHtml("#55FAB04D")));
            Map1.AddStaticLayers("HighlightOverlay", highlightLayer);

            MemoryLayer resultLayer = new MemoryLayer {
                Name = "ResultLayer"
            };

            resultLayer.Styles.Add(new SymbolStyle(SymbolType.Circle, GeoColor.FromHtml("#99FF5722"), GeoColors.White));
            resultLayer.Styles.Add(new LineStyle(GeoColor.FromHtml("#00BCD4"), 4));
            Map1.AddDynamicLayers("ResultOverlay", resultLayer);

            Map1.ZoomTo(GeoBound.CreateToInclude(new[] { feature1, feature2 }));
        }
        private void Map1_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeoUnit.Meter;
            Map1.UseOpenStreetMapAsBaseMap();

            ShapefileSource dataSource = new ShapefileSource("SampleData/countries-900913.shp");

            dataSource.Open();
            highlightFeature = dataSource.GetFeatureById("1", RequireColumnsType.None);

            GeoBound highlightBound = highlightFeature.GetBound();

            highlightBoundFeature = new Feature(highlightBound);

            MemoryLayer highlightLayer = new MemoryLayer()
            {
                Name = "HighlightLayer"
            };

            highlightLayer.Features.Add(highlightFeature);
            highlightLayer.Features.Add(highlightBoundFeature);
            highlightLayer.Styles.Add(new FillStyle(GeoColor.FromHtml("#55FAB04D")));
            highlightLayer.Styles.Add(new LineStyle(GeoColor.FromHtml("#00BCD4"), 4));
            Map1.AddStaticLayers("HighlightOverlay", highlightLayer);

            MemoryLayer resultLayer = new MemoryLayer {
                Name = "ResultLayer"
            };

            resultLayer.Styles.Add(new FillStyle(GeoColor.FromHtml("#55FAB04D"), GeoColors.White));
            Map1.AddDynamicLayers("ResultOverlay", resultLayer);

            Map1.ZoomTo(highlightFeature);
        }
Beispiel #3
0
        private void Map1_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeoUnit.Meter;
            Map1.UseOpenStreetMapAsBaseMap();

            ShapefileLayer sectionLayer = new ShapefileLayer("SampleData/sections-900913.shp");

            sectionLayer.Styles.Add(new FillStyle(GeoColors.Transparent, GeoColor.FromHtml("#99FAB04D"), 1));
            Map1.AddStaticLayers("SectionOverlay", sectionLayer);

            GeoBound sectionBound = sectionLayer.GetBound();
            GeoBound queryArea    = (GeoBound)sectionBound.Clone();

            queryArea.ScaleDown(60);

            MemoryLayer queryAreaLayer = new MemoryLayer {
                Name = "QueryAreaLayer"
            };

            queryAreaLayer.Styles.Add(new FillStyle(GeoColors.Transparent, GeoColor.FromHtml("#9900BCD4"), 4));
            queryAreaLayer.Features.Add(new Feature(queryArea));
            Map1.AddStaticLayers("SectionOverlay", queryAreaLayer);

            MemoryLayer highlightLayer = new MemoryLayer {
                Name = "HighlightLayer"
            };

            highlightLayer.Styles.Add(new FillStyle(GeoColor.FromHtml("#66FFFF00"), GeoColors.White));
            Map1.AddDynamicLayers("HighlightOverlay", highlightLayer);

            Map1.ZoomTo(sectionLayer.GetBound());
        }
Beispiel #4
0
        private void Map1_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeoUnit.Meter;
            Map1.UseOpenStreetMapAsBaseMap();

            GeoLine greatCircle = CreateGreatCircle();

            MemoryLayer baselineLayer = new MemoryLayer {
                Name = "BaseLineLayer"
            };

            baselineLayer.Styles.Add(new LineStyle(GeoColors.White, 8));
            baselineLayer.Styles.Add(new LineStyle(GeoColor.FromHtml("#88FAB04D"), 4));
            baselineLayer.Features.Add(new Feature(greatCircle));
            Map1.AddStaticLayers(baselineLayer);

            Stream airplaneIconStream = Application.GetResourceStream(new Uri("/SlimGis.WpfSamples;component/Images/airplane.png", UriKind.RelativeOrAbsolute)).Stream;

            MemoryLayer highlightLayer = new MemoryLayer {
                Name = "HighlightLayer"
            };

            highlightLayer.Styles.Add(new LineStyle(GeoColor.FromHtml("#9903A9F4"), 4));
            highlightLayer.Styles.Add(new IconStyle(new GeoImage(airplaneIconStream))
            {
                AspectRatio = 0.6667
            });
            Map1.AddDynamicLayers("HighlightOverlay", highlightLayer);

            GeoBound bound = baselineLayer.GetBound();

            bound.ScaleUp(25);
            Map1.ZoomTo(bound);
        }
Beispiel #5
0
        private void Map1_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeoUnit.Meter;
            Map1.UseOpenStreetMapAsBaseMap();

            GeoBound bound  = new GeoBound(2171997.6512, 8356849.2669, 3515687.9933, 11097616.86);
            GeoPoint center = bound.GetCentroid();
            double   x1     = bound.MinX + bound.Width * .25;
            double   y      = center.Y;
            double   x2     = bound.MaxX - bound.Width * .25;
            double   radius = bound.Width * 3 / 8;

            feature1 = new Feature(new GeoEllipse(new GeoPoint(x1, y), radius));
            feature2 = new Feature(new GeoEllipse(new GeoPoint(x2, y), radius));

            MemoryLayer highlightLayer = new MemoryLayer {
                Name = "HighlightLayer"
            };

            highlightLayer.Features.Add(feature1);
            highlightLayer.Features.Add(feature2);
            highlightLayer.Styles.Add(new FillStyle(GeoColor.FromHtml("#55FAB04D"), GeoColors.White));
            Map1.AddStaticLayers("HighlightOverlay", highlightLayer);

            MemoryLayer resultLayer = new MemoryLayer {
                Name = "ResultLayer"
            };

            resultLayer.Styles.Add(new FillStyle(GeoColor.FromHtml("#99FF5722"), GeoColors.White));
            Map1.AddDynamicLayers("ResultOverlay", resultLayer);

            Map1.ZoomTo(bound);
        }
Beispiel #6
0
        private void Map1_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeoUnit.Meter;
            Map1.AddStaticLayers("OpenStreetMap", new OpenStreetMapLayer());

            GeoBound currentBound = new GeoBound(1534877.2788, 5720521.3921, 1536797.864, 5721952.8921);

            Map1.ZoomTo(currentBound);
        }
        public async Task <IEnumerable <string> > SuggestAsync(
            string part,
            LangType langType,
            GeoBound geoBound,
            bool rspn = false)
        {
            string requestUrl = string.Format(RequestUrl, this.StringEncode(part), this.LangTypeToStr(langType))
                                + base.BuildGeoBound(geoBound, rspn);

            return(await this.SuggestinRequestInternal(requestUrl));
        }
Beispiel #8
0
        private GeoBound CreateRectangle()
        {
            double minX = Map1.CurrentBound.MinX + Map1.CurrentBound.Width * .25;
            double maxX = Map1.CurrentBound.MinX + Map1.CurrentBound.Width * .75;
            double minY = Map1.CurrentBound.MinY + Map1.CurrentBound.Height * .25;
            double maxY = Map1.CurrentBound.MinY + Map1.CurrentBound.Height * .75;

            GeoBound rect = new GeoBound(minX, minY, maxX, maxY);

            return(rect);
        }
Beispiel #9
0
        private void Map1_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeoUnit.Meter;
            Map1.UseOpenStreetMapAsBaseMap();

            GeoBound bound = (GeoBound)Map1.MaxBound.Clone();

            bound.ScaleDown(60);
            Map1.Behaviors.EditBehavior.EditingFeatures.Add(new Feature(bound));

            Map1.ZoomToFullBound();
        }
Beispiel #10
0
        private GeoEllipse CreateEllipse()
        {
            GeoBound bound = (GeoBound)Map1.CurrentBound.Clone();

            bound.ScaleDown(40);
            GeoEllipse ellipse = new GeoEllipse(bound);

            //// use this to create ellipse by center, width and height.
            //GeoEllipse ellipse = new GeoEllipse(bound.GetCentroid(), bound.Width, bound.Height);

            return(ellipse);
        }
Beispiel #11
0
        /// <summary>
        /// Location determination by name, indicating the quantity of objects to return and preference language.
        /// Allows limit the search or affect the issuance result.
        /// </summary>
        /// <param name="location">Name of a geographic location.</param>
        /// <param name="results">Maximum number of objects to return.</param>
        /// <param name="lang">Preference language for describing objects.</param>
        /// <param name="geoBound">Search geographical area, affects to issuance of results.</param>
        /// <param name="rspn">Allows limit the search (true) or affect the issuance result (false - default).</param>
        /// <returns>Collection of found locations</returns>
        public async Task <GeoObjectCollection> GeocodeAsync(
            string location,
            short results,
            LangType lang,
            GeoBound geoBound,
            bool rspn = false)
        {
            string requestUlr =
                string.Format(RequestUrl, this.StringEncode(location), results, this.LangTypeToStr(lang))
                + this.BuildGeoBound(geoBound, rspn)
                + (string.IsNullOrEmpty(this.Key) ? string.Empty : "&key=" + this.Key);

            return(new GeoObjectCollection(await this.DownloadStringAsync(requestUlr)));
        }
Beispiel #12
0
        /// <summary>
        /// Handles the Loaded event of the Map1 control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RoutedEventArgs"/> instance containing the event data.</param>
        private void Map1_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeoUnit.Meter;
            Map1.UseOpenStreetMapAsBaseMap();

            ShapefileLayer lineLayer = new ShapefileLayer("SampleData/streets-900913.shp");

            lineLayer.Styles.Add(new LineStyle(GeoColor.FromHtml("#55FAB04D"), 1));
            Map1.AddStaticLayers("LineOverlay", lineLayer);

            GeoBound bound = lineLayer.GetBound();

            bound.ScaleDown(90);
            Map1.ZoomTo(bound);
        }
        private void Map1_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeoUnit.Meter;
            Map1.AddStaticLayers("OpenStreetMap", new OpenStreetMapLayer());

            GeoBound    currentBound = new GeoBound(1534877.2788, 5720521.3921, 1536797.864, 5721952.8921);
            BitmapImage sourceImage  = new BitmapImage(new Uri("pack://application:,,,/SlimGis.WpfSamples;component/Images/6x9_icons_50.png", UriKind.RelativeOrAbsolute));

            Random r = new Random();

            for (int i = 0; i < 100; i++)
            {
                double x = r.Next(1534877, 1536797);
                double y = r.Next(5720521, 5721952);
                AddMarker(x, y, GetRandomIcon(r, sourceImage));
            }

            Map1.ZoomTo(currentBound);
        }
Beispiel #14
0
        private void Map1_MapSingleClick(object sender, MapClickEventArgs e)
        {
            Feature identifiedFeature = IdentifyHelper.Identify(dataLayer, e.WorldCoordinate, Map1.CurrentScale, Map1.MapUnit).FirstOrDefault();

            if (identifiedFeature != null)
            {
                MemoryLayer highlightLayer = Map1.FindLayer <MemoryLayer>("HighlightLayer");

                highlightLayer.Features.Clear();
                highlightLayer.Features.Add(identifiedFeature);

                GeoBound identifiedBound = identifiedFeature.GetBound();
                highlightLayer.Features.Add(new Feature(new GeoLine(identifiedBound.GetVertices())));

                GeoPoint identifiedCenter = identifiedBound.GetCentroid();
                highlightLayer.Features.Add(new Feature(identifiedCenter));

                Map1.Refresh("HighlightOverlay");
            }
        }
Beispiel #15
0
        private Feature CreateLineFeature(GeoBound bound)
        {
            GeoLine line = new GeoLine();

            double startX                  = bound.MinX + bound.Width * .15;
            double endX                    = bound.MinX + bound.Width * .85;
            double centerY                 = bound.GetCentroid().Y;
            double height                  = bound.Height * .25;
            int    segmentCount            = 30;
            double segmentHorizontalLength = (endX - startX) / segmentCount;

            for (int i = 0; i < segmentCount; i++)
            {
                double x = startX + segmentHorizontalLength * i;
                double y = Math.Sin(Math.PI * 2 * i / segmentCount) * height + centerY;
                line.Coordinates.Add(new GeoCoordinate(x, y));
            }

            return(new Feature(line));
        }
        private async void wpfMap_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeoUnit.Meter;

            LayerOverlay baseOverlay = new LayerOverlay();

            baseOverlay.Name = "Base Maps";
            Map1.Overlays.Add(baseOverlay);

            OpenStreetMapLayer baseLayer = new OpenStreetMapLayer();

            baseOverlay.Layers.Add(baseLayer);

            routeLine   = new GeoLine("LINESTRING(2121735.25 6023143.5,2121641.25 6023344,2121161.25 6023667,2121192.75 6025693,2121255.5 6025818.5,2122127.25 6024946.5,2121986.25 6024802.5,2122262.25 6024536,2122014.5 6024363.5,2122691.75 6023497.5,2121754 6023137)");
            routeLength = routeLine.GetLength(GeoUnit.Meter, LengthUnit.Kilometer);
            MemoryLayer routeLayer = new MemoryLayer();

            routeLayer.Styles.Add(new LineStyle(GeoColor.FromRgba(GeoColors.SkyBlue, 180), 10));
            routeLayer.Features.Add(new Feature(routeLine));
            Map1.AddStaticLayers("Route Line", routeLayer);

            Marker vehicle = new Marker();

            vehicle.DropShadow      = false;
            vehicle.OffsetY         = 4;
            vehicle.RenderTransform = new RotateTransform {
                CenterX = 17, CenterY = 7, Angle = -90
            };
            vehicle.ImageSource = new BitmapImage(new Uri("pack://application:,,,/Images/vehicle-red.png", UriKind.RelativeOrAbsolute));
            vehicle.Location    = routeLine.Coordinates.First();
            Map1.Placements.Add(vehicle);

            GeoBound bound = routeLayer.GetBound();

            bound.ScaleUp(40);
            Map1.ZoomTo(bound);
            projection = new Proj4Projection(SpatialReferences.GetSphericalMercator(), SpatialReferences.GetWgs84());
            UpdateLonLat(new GeoPoint(vehicle.Location));
        }
Beispiel #17
0
        private void WpfMap_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeoUnit.Meter;
            gpsScene     = new GpsScene(Map1.MapUnit);

            Map1.UseOpenStreetMapAsBaseMap();

            var routeLayer = new MemoryLayer();

            routeLayer.Styles.Add(new LineStyle(GeoColor.FromRgba(GeoColors.SkyBlue, 180), 10));
            Map1.AddStaticLayers("Route Line", routeLayer);

            var routeDataStream = Application.GetResourceStream(new Uri("pack://application:,,,/Resources/routes.txt")).Stream;
            var speedRandom     = new Random();

            using (var streamReader = new StreamReader(routeDataStream))
            {
                var routeData = streamReader.ReadToEnd().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < routeData.Length; i++)
                {
                    GeoLine route = new GeoLine(routeData[i]);
                    routeLayer.Features.Add(new Feature(route));
                    Marker vehicle = GetVehicle(i, route);
                    Map1.Placements.Add(vehicle);

                    GpsSprite gpsSprite = new GpsSprite(vehicle);
                    gpsScene.Fps         = 60;
                    gpsSprite.SpeedInKph = speedRandom.Next(40, 120);
                    gpsSprite.Route      = route;
                    gpsScene.Sprites.Add(gpsSprite);
                }
            }

            GeoBound bound = routeLayer.GetBound();

            bound.ScaleUp(40);
            Map1.ZoomTo(bound);
        }
Beispiel #18
0
        private void Map1_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeoUnit.Meter;
            Map1.UseOpenStreetMapAsBaseMap();
            GeoBound currentBound = new GeoBound(2171997.6512, 8356849.2669, 3515687.9933, 11097616.86);

            MemoryLayer baselineLayer = new MemoryLayer {
                Name = "BaseLineLayer"
            };

            baselineLayer.Styles.Add(new LineStyle(GeoColors.White, 8));
            baselineLayer.Styles.Add(new LineStyle(GeoColor.FromHtml("#88FAB04D"), 4));
            baselineLayer.Features.Add(CreateLineFeature(currentBound));
            Map1.AddStaticLayers(baselineLayer);

            MemoryLayer highlightLayer = new MemoryLayer {
                Name = "HighlightLayer"
            };

            highlightLayer.Styles.Add(new LineStyle(GeoColor.FromHtml("#9903A9F4"), 4));
            Map1.AddDynamicLayers("HighlightOverlay", highlightLayer);

            Map1.ZoomTo(currentBound);
        }
 protected string BuildGeoBound(GeoBound geoBound, bool rspn = false)
 {
     return
         ($"&bbox={geoBound.LowerCorner.Longitude},{geoBound.LowerCorner.Latitude}~{geoBound.UpperCorner.Longitude},{geoBound.UpperCorner.Latitude}&rspn={(rspn ? 1 : 0)}");
 }