protected override BaseShape CreateAccessibleAreaCore() { string rtgFilePathName = Path.ChangeExtension(StreetShapeFilePathName, ".rtg"); RtgRoutingSource routingSource = new RtgRoutingSource(rtgFilePathName); FeatureSource featureSource = new ShapeFileFeatureSource(StreetShapeFilePathName); RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource); if (!featureSource.IsOpen) { featureSource.Open(); } ManagedProj4Projection proj = new ManagedProj4Projection(); proj.InternalProjectionParametersString = ManagedProj4Projection.GetBingMapParametersString(); proj.ExternalProjectionParametersString = ManagedProj4Projection.GetEpsgParametersString(4326); proj.Open(); StartLocation = proj.ConvertToExternalProjection(StartLocation) as PointShape; Feature feature = featureSource.GetFeaturesNearestTo(StartLocation, GeographyUnit, 1, ReturningColumnsType.NoColumns)[0]; PolygonShape polygonShape = routingEngine.GenerateServiceArea(feature.Id, new TimeSpan(0, DrivingTimeInMinutes, 0), 100, GeographyUnit.Feet); polygonShape = proj.ConvertToInternalProjection(polygonShape) as PolygonShape; proj.Close(); return(polygonShape); }
private void btnRaiseEvent_Click(object sender, EventArgs e) { cancel = false; gbProgress.Visible = true; processedCount = 0; pgBuildingData.Minimum = 0; pgBuildingData.Value = 0; ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp")); featureSource.Open(); pgBuildingData.Maximum = featureSource.GetCount(); lbTotalCount.Text = pgBuildingData.Maximum.ToString(CultureInfo.InvariantCulture); featureSource.Close(); RtgRoutingSource.GenerateRoutingData(Path.Combine(rootPath, "BuildingRoutingDataEvent.rtg"), featureSource, BuildRoutingDataMode.Rebuild, "DallasCounty-4326.shp"); if (cancel) { MessageBox.Show("Building routing data has been cancelled!"); } else { MessageBox.Show("Finish building routing data!"); } gbProgress.Visible = false; }
public override void ViewDidLoad() { base.ViewDidLoad(); mapView = new MapView(View.Frame); View.Add(mapView); ComposeTableControl(); mapView.MapUnit = GeographyUnit.Meter; mapView.ZoomLevelSet = ThinkGeoCloudMapsOverlay.GetZoomLevelSet(); mapView.MapSingleTap += MapViewMapSingleTap; ThinkGeoCloudMapsOverlay thinkGeoCloudMapsOverlay = new ThinkGeoCloudMapsOverlay(); mapView.Overlays.Add(thinkGeoCloudMapsOverlay); layerOverlay = new LayerOverlay(); routingLayer = new RoutingLayer(); layerOverlay.Layers.Add(routingLayer); mapView.Overlays.Add(layerOverlay); string shapeFilePath = Path.Combine("AppData", "DallasCounty-3857.shp"); string rtgPath = Path.Combine("AppData", "DallasCounty-3857.rtg"); var routingSource = new RtgRoutingSource(rtgPath); var featureSource = new ShapeFileFeatureSource(shapeFilePath); routingEngine = new RoutingEngine(routingSource, featureSource); routingEngine.GeographyUnit = GeographyUnit.Meter; routingEngine.SearchRadiusInMeters = 200; mapView.CurrentExtent = new RectangleShape(-10781100.2970769, 3875007.18710502, -10767407.8727504, 3854947.78546675); mapView.Refresh(); }
private void Route() { FeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp")); RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg")); RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource); RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"]; Collection <LineShape> paths = new Collection <LineShape>(); if (cbxAddStop.Checked) { paths.Add(routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.StopPoints[0]).Route); paths.Add(routingEngine.GetRoute(routingLayer.StopPoints[0], routingLayer.EndPoint).Route); } else { paths.Add(routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.EndPoint).Route); } RoutingLayer inmemoryLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"]; inmemoryLayer.Routes.Clear(); foreach (LineShape item in paths) { inmemoryLayer.Routes.Add(item); } }
private void btnRoute_Click(object sender, EventArgs e) { RtgRoutingSource routingSource = new RtgRoutingSource(@"..\..\SampleData\Austinstreets.rtg"); RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource); routingEngine.GeneratingServiceArea += new EventHandler <GeneratingServiceAreaRoutingEngineEventArgs>(routingEngine_GeneratingServiceArea); float averageSpeed = float.Parse(txtAverageSpeed.Text); int drivingMinutes = int.Parse(txtDrivingMinutes.Text); PolygonShape polygonShape = routingEngine.GenerateServiceArea(txtStartId.Text, new TimeSpan(0, drivingMinutes, 0), averageSpeed); InMemoryFeatureLayer routingLayer = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"]; routingLayer.InternalFeatures.Remove("ServiceArea"); if (polygonShape.Validate(ShapeValidationMode.Simple).IsValid) { routingLayer.InternalFeatures.Add("ServiceArea", new Feature(polygonShape)); routingLayer.Open(); winformsMap1.CurrentExtent = routingLayer.GetBoundingBox(); routingLayer.Close(); } winformsMap1.Overlays["RoutingOverlay"].Lock.IsDirty = true; winformsMap1.Refresh(); }
private void btnRoute_Click(object sender, EventArgs e) { ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource(@"..\..\SampleData\Austinstreets.shp"); RoutingSource routingSource = new RtgRoutingSource(@"..\..\SampleData\routeDataForFastest.rtg"); RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource); RoutingResult routingResult = routingEngine.GetShortestPath(txtStartId.Text, txtEndId.Text); InMemoryFeatureLayer routingLayer = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"]; winformsMap1.Overlays["RoutingOverlay"].Lock.EnterWriteLock(); try { routingLayer.InternalFeatures.Clear(); foreach (Feature feature in routingResult.Features) { routingLayer.InternalFeatures.Add(feature); } } finally { winformsMap1.Overlays["RoutingOverlay"].Lock.ExitWriteLock(); } winformsMap1.Refresh(); }
private void InitalizeMap() { mapView.MapUnit = GeographyUnit.Meter; mapView.ZoomLevelSet = new ThinkGeoCloudMapsZoomLevelSet(); mapView.SingleTap += MapView_SingleTap; // Please input your ThinkGeo Cloud Client ID / Client Secret to enable the background map. ThinkGeoCloudRasterMapsOverlay baseOverlay = new ThinkGeoCloudRasterMapsOverlay("ThinkGeo Cloud Client ID", "ThinkGeo Cloud Client Secret"); mapView.Overlays.Add(baseOverlay); layerOverlay = new LayerOverlay(); routingLayer = new RoutingLayer(); layerOverlay.Layers.Add(routingLayer); mapView.Overlays.Add(layerOverlay); var routingSource = new RtgRoutingSource(DataManager.GetDataPath("DallasCounty-3857.rtg")); var featureSource = new ShapeFileFeatureSource(DataManager.GetDataPath("DallasCounty-3857.shp")); routingEngine = new RoutingEngine(routingSource, featureSource); routingEngine.GeographyUnit = GeographyUnit.Meter; routingEngine.SearchRadiusInMeters = 100; mapView.CurrentExtent = new RectangleShape(-10781100.2970769, 3875007.18710502, -10767407.8727504, 3854947.78546675); }
private void RenderMap() { winformsMap1.MapUnit = GeographyUnit.DecimalDegree; winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#e6e5d1")); winformsMap1.CurrentExtent = new RectangleShape(-97.763384, 30.299707, -97.712382, 30.259309); ShapeFileFeatureLayer austinstreetsLayer = new ShapeFileFeatureLayer(@"..\..\SampleData\Austinstreets.shp"); austinstreetsLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(GetRoadStyle()); austinstreetsLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; LayerOverlay austinstreetsOverlay = new LayerOverlay(); austinstreetsOverlay.Layers.Add("AustinstreetsLayer", austinstreetsLayer); winformsMap1.Overlays.Add("AustinstreetsOverlay", austinstreetsOverlay); // The layer for rendering routing result InMemoryFeatureLayer routingLayer = new InMemoryFeatureLayer(); routingLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle.OuterPen = new GeoPen(GeoColor.FromArgb(100, GeoColor.StandardColors.Purple), 5); routingLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; LayerOverlay routingOverlay = new LayerOverlay(); routingOverlay.Layers.Add("RoutingLayer", routingLayer); winformsMap1.Overlays.Add("RoutingOverlay", routingOverlay); // The layer for rendering start and end points InMemoryFeatureLayer stopLayer = new InMemoryFeatureLayer(); stopLayer.Open(); stopLayer.Columns.Add(new FeatureSourceColumn("Order")); stopLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = new PointStyle(PointSymbolType.Square, new GeoSolidBrush(GeoColor.SimpleColors.LightGreen), new GeoPen(GeoColor.SimpleColors.Black), 12); stopLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.Urban1("Order"); stopLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.XOffsetInPixel = -4; stopLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; LayerOverlay stopOverlay = new LayerOverlay(); stopOverlay.Layers.Add("StopLayer", stopLayer); winformsMap1.Overlays.Add("StopOverlay", stopOverlay); // Add start and end points to the layer RoutingSource routingSource = new RtgRoutingSource(@"..\..\SampleData\Austinstreets.rtg"); routingSource.Open(); austinstreetsLayer.Open(); Feature startRoad = austinstreetsLayer.FeatureSource.GetFeatureById(txtStartId.Text, ReturningColumnsType.NoColumns); Feature startPoint = new Feature(startRoad.GetShape().GetCenterPoint().GetWellKnownBinary()); startPoint.ColumnValues["Order"] = "1"; stopLayer.InternalFeatures.Add(startPoint); Feature endRoad = austinstreetsLayer.FeatureSource.GetFeatureById(txtEndId.Text, ReturningColumnsType.NoColumns); Feature endPoint = new Feature(endRoad.GetShape().GetCenterPoint().GetWellKnownBinary()); endPoint.ColumnValues["Order"] = "2"; stopLayer.InternalFeatures.Add(endPoint); routingSource.Close(); austinstreetsLayer.Close(); winformsMap1.Refresh(); }
private void ShowTheShortestPath(RoutingLayer routingLayer) { RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasWithOneWayRoad.rtg")); RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource); RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text); routingLayer.Routes.Clear(); routingLayer.Routes.Add(routingResult.Route); }
private void btnBuild_Click(object sender, EventArgs e) { if (MessageBox.Show("This operation will take a while, click Ok to continue and click Canel to quit.", "Build Routing Data", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK) { featureSource = GetFeatureSource(); RtgRoutingSource.GenerateRoutingData(Path.Combine(rootPath, txtFilename.Text), featureSource, BuildRoutingDataMode.Rebuild, GeographyUnit.DecimalDegree, DistanceUnit.Meter); MessageBox.Show("Finish building routing data!"); } }
private void btnGenerateRoadData_Click(object sender, EventArgs e) { MessageBox.Show("Finish building routing data!"); return; RtgRoutingSource.BuildingRoadData += new EventHandler <BuildingRoutingDataRtgRoutingSourceEventArgs>(RtgRoutingSource_BuildingRoadData); ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource(@"..\..\SampleData\Austinstreets.shp"); RtgRoutingSource.GenerateRoutingData(@"..\..\SampleData\routeDataForFastest.rtg", featureSource, "Austinstreets.shp"); }
private void UserControl_Load(object sender, EventArgs e) { RenderMap(); featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp")); featureSource.Open(); RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "HighwayFirst.rtg")); routingEngine = new RoutingEngine(routingSource, featureSource); routingEngine.RoutingAlgorithm.FindingRoute += new EventHandler <FindingRouteRoutingAlgorithmEventArgs>(Algorithm_FindingPath); this.cbmPrioritiy.Text = "On Foot"; }
private void btnRoute_Click(object sender, EventArgs e) { RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg")); ShapeFileFeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp")); RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource); RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"]; RoutingResult routingResult = routingEngine.GetRoute(routingLayer.StartPoint, routingLayer.EndPoint); routingLayer.Routes.Clear(); routingLayer.Routes.Add(routingResult.Route); winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]); }
void cbmAlgorithm_SelectedIndexChanged(object sender, EventArgs e) { FeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp")); RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg")); RoutingEngine routingEngine = new RoutingEngine(routingSource, GetAlgorithm(), featureSource); RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text); RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"]; routingLayer.Routes.Clear(); routingLayer.Routes.Add(routingResult.Route); winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]); }
private void btnGenerateRoadData_Click(object sender, EventArgs e) { MultipleShapeFileFeatureLayer.BuildIndex(@"..\..\SampleData\testdata?.shp", BuildIndexMode.DoNotRebuild); MultipleShapeFileFeatureSource featureSource = new MultipleShapeFileFeatureSource(@"..\..\SampleData\testdata?.shp", @"..\..\SampleData\testdata?.midx"); Collection <string> shapePathFileNames = featureSource.GetShapePathFileNames(); string fileNames = String.Empty; foreach (string fileName in shapePathFileNames) { fileNames += Path.GetFileName(fileName) + ","; } RtgRoutingSource.GenerateRoutingData(@"..\..\SampleData\testdata.rtg", featureSource, fileNames.TrimEnd(','), BuildRoutingDataMode.DoNotRebuild); MessageBox.Show("Finish building routing data!"); }
private void btnRoute_Click(object sender, EventArgs e) { FeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp")); RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg")); RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource); RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text); RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"]; routingLayer.Routes.Clear(); routingLayer.Routes.Add(routingResult.Route); ShowTurnByTurnDirections(routingResult.RouteSegments, routingResult.Features); winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]); }
private void RenderPathBetweenPoints() { FeatureSource featureSource = new ShapeFileFeatureSource(@"..\..\SampleData\Austinstreets.shp"); RoutingSource routingSource = new RtgRoutingSource(@"..\..\SampleData\Austinstreets.rtg"); RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource); RoutingResult routingResult = null; InMemoryFeatureLayer stopLayer = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["StopOverlay"]).Layers["StopLayer"]; if (stopLayer.InternalFeatures.Count > 2) { string startId = stopLayer.InternalFeatures[0].Id; string stopId = stopLayer.InternalFeatures[1].Id; string endId = stopLayer.InternalFeatures[2].Id; routingResult = routingEngine.GetRoute(startId, stopId); RoutingResult secondRoutingResult = routingEngine.GetRoute(stopId, endId); foreach (Feature item in secondRoutingResult.Features) { routingResult.Features.Add(item); } } else { routingResult = routingEngine.GetRoute("4716", "9638"); } //winformsMap1.Overlays["RoutingOverlay"].Lock.EnterWriteLock(); //try //{ InMemoryFeatureLayer inmemoryLayer = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"]; inmemoryLayer.InternalFeatures.Clear(); foreach (Feature feature in routingResult.Features) { inmemoryLayer.InternalFeatures.Add(feature); } //} //finally //{ // winformsMap1.Overlays["RoutingOverlay"].Lock.ExitWriteLock(); //} winformsMap1.Overlays["RoutingOverlay"].Lock.IsDirty = true; winformsMap1.Refresh(); }
private void UserControl_Load(object sender, EventArgs e) { featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp")); allowArea = new PolygonShape(txtAvoidWkt.Text); featureSource.Open(); Collection <Feature> features = featureSource.SpatialQuery(allowArea, QueryType.Within, ReturningColumnsType.NoColumns); featureSource.Close(); allowFeatureIds = new Collection <string>(); foreach (Feature item in features) { allowFeatureIds.Add(item.Id); } RoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg")); routingEngine = new RoutingEngine(routingSource, new AStarRoutingAlgorithm(), featureSource); RenderMap(); }
private void btnRoute_Click(object sender, EventArgs e) { RoutingSource routingSource = new RtgRoutingSource(@"..\..\SampleData\AustinStreetFromOleDb.rtg"); RoutingEngine routingEngine = new RoutingEngine(routingSource, new DijkstraRoutingAlgorithm(), featureSource); RoutingResult routingResult = routingEngine.GetRoute(txtStartId.Text, txtEndId.Text); RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"]; winformsMap1.Overlays["RoutingOverlay"].Lock.EnterWriteLock(); try { routingLayer.Routes.Clear(); routingLayer.Routes.Add(routingResult.Route); } finally { winformsMap1.Overlays["RoutingOverlay"].Lock.ExitWriteLock(); } winformsMap1.Refresh(); }
private void btnGetInformation_Click(object sender, EventArgs e) { ShapeFileFeatureLayer dallasStreetsLayer = new ShapeFileFeatureLayer(Path.Combine(rootPath, "DallasCounty-4326.shp")); dallasStreetsLayer.Open(); RtgRoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.rtg")); routingSource.ReadEndPoints = true; routingSource.Open(); RouteSegment road = routingSource.GetRouteSegmentByFeatureId(txtRoadId.Text); // render routeSegment information RenderRoadInformation(dallasStreetsLayer, road); // render adjacent routeSegments information RenderAdjacentRoadsInformation(dallasStreetsLayer, road); dallasStreetsLayer.Close(); routingSource.Close(); winformsMap1.Refresh(new Overlay[] { winformsMap1.Overlays["currentRoadOverlay"], winformsMap1.Overlays["adjacentRoadsOverlay"] }); }
private void Route() { RtgRoutingSource routingSource = new RtgRoutingSource(Path.Combine(rootPath, "DallasCounty-4326.shortest.rtg")); FeatureSource featureSource = new ShapeFileFeatureSource(Path.Combine(rootPath, "DallasCounty-4326.shp")); RoutingEngine routingEngine = new RoutingEngine(routingSource, featureSource); float averageSpeed = float.Parse(txtAverageSpeed.Text); int drivingMinutes = int.Parse(txtDrivingMinutes.Text); SpeedUnit speedUnit = GetSpeedUnit(); PolygonShape polygonShape = routingEngine.GenerateServiceArea(txtStartId.Text, new TimeSpan(0, drivingMinutes, 0), averageSpeed, speedUnit); InMemoryFeatureLayer routingLayer = (InMemoryFeatureLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"]; routingLayer.InternalFeatures.Remove("ServiceArea"); if (polygonShape.Validate(ShapeValidationMode.Simple).IsValid) { routingLayer.InternalFeatures.Add("ServiceArea", new Feature(polygonShape)); routingLayer.Open(); winformsMap1.CurrentExtent = routingLayer.GetBoundingBox(); routingLayer.Close(); } winformsMap1.Refresh(winformsMap1.Overlays["RoutingOverlay"]); }
private void AddOverlays(Map map) { // Background Overlay WorldStreetsAndImageryOverlay worldMapKitRoadOverlay = new WorldStreetsAndImageryOverlay("World Map Kit Road"); worldMapKitRoadOverlay.Projection = WorldStreetsAndImageryProjection.SphericalMercator; worldMapKitRoadOverlay.MapType = WorldStreetsAndImageryMapType.Road; map.CustomOverlays.Add(worldMapKitRoadOverlay); WorldStreetsAndImageryOverlay worldMapKitAerialOverlay = new WorldStreetsAndImageryOverlay("World Map Kit Aerial"); worldMapKitAerialOverlay.Projection = WorldStreetsAndImageryProjection.SphericalMercator; worldMapKitAerialOverlay.MapType = WorldStreetsAndImageryMapType.Aerial; map.CustomOverlays.Add(worldMapKitAerialOverlay); WorldStreetsAndImageryOverlay worldMapKitAerialWithLabelsOverlay = new WorldStreetsAndImageryOverlay("World Map Kit Aerial With Labels"); worldMapKitAerialWithLabelsOverlay.Projection = WorldStreetsAndImageryProjection.SphericalMercator; worldMapKitAerialWithLabelsOverlay.MapType = WorldStreetsAndImageryMapType.AerialWithLabels; map.CustomOverlays.Add(worldMapKitAerialWithLabelsOverlay); OpenStreetMapOverlay openStreetMapOverlay = new OpenStreetMapOverlay("Open Street Map"); map.CustomOverlays.Add(openStreetMapOverlay); LayerOverlay poisOverlay = new LayerOverlay("PoisOverlay"); poisOverlay.IsBaseOverlay = false; poisOverlay.IsVisibleInOverlaySwitcher = false; map.CustomOverlays.Add(poisOverlay); // POI Overlay Proj4Projection proj4 = new Proj4Projection(); proj4.InternalProjectionParametersString = Proj4Projection.GetDecimalDegreesParametersString(); proj4.ExternalProjectionParametersString = Proj4Projection.GetSphericalMercatorParametersString(); proj4.Open(); ShapeFileFeatureLayer hotelsLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["HotelsShapeFilePathName"]), GeoFileReadWriteMode.Read); hotelsLayer.Name = Resource.Hotels; hotelsLayer.Transparency = 120f; hotelsLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle = new PointStyle(new GeoImage(Server.MapPath("~/Content/Images/Hotel.png"))); hotelsLayer.ZoomLevelSet.ZoomLevel10.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; hotelsLayer.FeatureSource.Projection = proj4; poisOverlay.Layers.Add(hotelsLayer.Name, hotelsLayer); ShapeFileFeatureLayer medicalFacilitesLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["MedicalFacilitiesShapeFilePathName"]), GeoFileReadWriteMode.Read); medicalFacilitesLayer.Name = Resource.MedicalFacilites; medicalFacilitesLayer.Transparency = 120f; medicalFacilitesLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle = new PointStyle(new GeoImage(Server.MapPath("~/Content/Images/DrugStore.png"))); medicalFacilitesLayer.ZoomLevelSet.ZoomLevel10.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; medicalFacilitesLayer.FeatureSource.Projection = proj4; poisOverlay.Layers.Add(medicalFacilitesLayer.Name, medicalFacilitesLayer); ShapeFileFeatureLayer publicFacilitesLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["PublicFacilitiesShapeFilePathName"]), GeoFileReadWriteMode.Read); publicFacilitesLayer.Name = Resource.PublicFacilites; publicFacilitesLayer.Transparency = 120f; publicFacilitesLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle = new PointStyle(new GeoImage(Server.MapPath("~/Content/Images/public_facility.png"))); publicFacilitesLayer.ZoomLevelSet.ZoomLevel10.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; publicFacilitesLayer.FeatureSource.Projection = proj4; poisOverlay.Layers.Add(publicFacilitesLayer.Name, publicFacilitesLayer); ShapeFileFeatureLayer restaurantsLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["RestaurantsShapeFilePathName"]), GeoFileReadWriteMode.Read); restaurantsLayer.Name = Resource.Restaurants; restaurantsLayer.Transparency = 120f; restaurantsLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle = new PointStyle(new GeoImage(Server.MapPath("~/Content/Images/restaurant.png"))); restaurantsLayer.ZoomLevelSet.ZoomLevel10.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; restaurantsLayer.FeatureSource.Projection = proj4; poisOverlay.Layers.Add(restaurantsLayer.Name, restaurantsLayer); ShapeFileFeatureLayer schoolsLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["SchoolsShapeFilePathName"]), GeoFileReadWriteMode.Read); schoolsLayer.Name = Resource.Schools; schoolsLayer.Transparency = 120f; schoolsLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle = new PointStyle(new GeoImage(Server.MapPath("~/Content/Images/school.png"))); schoolsLayer.ZoomLevelSet.ZoomLevel10.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; schoolsLayer.FeatureSource.Projection = proj4; poisOverlay.Layers.Add(schoolsLayer.Name, schoolsLayer); // Restrict area Overlay ShapeFileFeatureLayer restrictedLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["RestrictedShapeFilePathName"]), GeoFileReadWriteMode.Read); AreaStyle extentStyle = new AreaStyle(); extentStyle.CustomAreaStyles.Add(new AreaStyle(new GeoSolidBrush(GeoColor.SimpleColors.Transparent)) { OutlinePen = new GeoPen(GeoColor.SimpleColors.White, 5.5f) }); extentStyle.CustomAreaStyles.Add(new AreaStyle(new GeoSolidBrush(GeoColor.SimpleColors.Transparent)) { OutlinePen = new GeoPen(GeoColor.SimpleColors.Red, 1.5f) { DashStyle = LineDashStyle.Dash } }); restrictedLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = extentStyle; restrictedLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; restrictedLayer.FeatureSource.Projection = proj4; LayerOverlay restrictOverlay = new LayerOverlay("RestrictOverlay"); restrictOverlay.IsBaseOverlay = false; restrictOverlay.IsVisibleInOverlaySwitcher = false; restrictOverlay.Layers.Add("RestrictLayer", restrictedLayer); map.CustomOverlays.Add(restrictOverlay); // Queried Service Overlay InMemoryFeatureLayer serviceAreaLayer = new InMemoryFeatureLayer(); GeoColor serviceAreaGeoColor = new GeoColor(120, GeoColor.FromHtml("#1749c9")); serviceAreaLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(serviceAreaGeoColor, GeoColor.FromHtml("#fefec1"), 2, LineDashStyle.Solid); serviceAreaLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; InMemoryFeatureLayer highlightFeatureLayer = new InMemoryFeatureLayer(); highlightFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; LayerOverlay queriedOverlay = new LayerOverlay("QueriedOverlay"); queriedOverlay.IsBaseOverlay = false; queriedOverlay.IsVisibleInOverlaySwitcher = false; queriedOverlay.TileType = TileType.SingleTile; queriedOverlay.Layers.Add("highlightFeatureLayer", highlightFeatureLayer); queriedOverlay.Layers.Add("serviceArea", serviceAreaLayer); map.CustomOverlays.Add(queriedOverlay); // Marker Overlay map.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = new WebImage("/Content/Images/selectedHalo.png") { ImageOffsetX = -16, ImageOffsetY = -16 }; map.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.BorderWidth = 1; map.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.BorderColor = GeoColor.StandardColors.Gray; map.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.AutoSize = true; map.MarkerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; map.MarkerOverlay.IsVisibleInOverlaySwitcher = false; // Drawn Point InMemoryMarkerOverlay markerOverlay = new InMemoryMarkerOverlay("DrawnPointOverlay"); markerOverlay.FeatureSource.InternalFeatures.Add(new Feature(new PointShape(-10776838.0796536, 3912346.50475619))); // Add a initial point for query markerOverlay.IsVisibleInOverlaySwitcher = false; markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = new WebImage("/Content/Images/drawPoint.png") { ImageOffsetX = -16, ImageOffsetY = -32 }; markerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; map.CustomOverlays.Add(markerOverlay); // Legend Layer LegendAdornmentLayer legendlayer = new LegendAdornmentLayer { Height = 135, Location = AdornmentLocation.LowerRight }; map.AdornmentOverlay.Layers.Add(legendlayer); LegendItem hotelsLayeritem = new LegendItem(); hotelsLayeritem.ImageStyle = hotelsLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle; hotelsLayeritem.TextStyle = WorldStreetsTextStyles.GeneralPurpose(Resource.Hotels, 10); legendlayer.LegendItems.Add("hotels", hotelsLayeritem); LegendItem medicalFacilitesLayeritem = new LegendItem(); medicalFacilitesLayeritem.ImageStyle = medicalFacilitesLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle; hotelsLayeritem.TextStyle = WorldStreetsTextStyles.GeneralPurpose(Resource.MedicalFacilites, 10); legendlayer.LegendItems.Add("medicalFacilites", medicalFacilitesLayeritem); LegendItem publicFacilitesLayeritem = new LegendItem(); publicFacilitesLayeritem.ImageStyle = publicFacilitesLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle; hotelsLayeritem.TextStyle = WorldStreetsTextStyles.GeneralPurpose(Resource.PublicFacilites, 10); legendlayer.LegendItems.Add("publicFacilites", publicFacilitesLayeritem); LegendItem restaurantsLayeritem = new LegendItem(); restaurantsLayeritem.ImageStyle = restaurantsLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle; hotelsLayeritem.TextStyle = WorldStreetsTextStyles.GeneralPurpose(Resource.Restaurants, 10); legendlayer.LegendItems.Add("restaurants", restaurantsLayeritem); LegendItem schoolsLayeritem = new LegendItem(); schoolsLayeritem.ImageStyle = schoolsLayer.ZoomLevelSet.ZoomLevel10.DefaultPointStyle; hotelsLayeritem.TextStyle = WorldStreetsTextStyles.GeneralPurpose(Resource.Schools, 10); legendlayer.LegendItems.Add("schools", schoolsLayeritem); // Scale bar layer ScaleBarAdornmentLayer scaleBarAdormentLayer = new ScaleBarAdornmentLayer(); scaleBarAdormentLayer.Location = AdornmentLocation.LowerLeft; scaleBarAdormentLayer.XOffsetInPixel = 10; map.AdornmentOverlay.Layers.Add("ScaleBar", scaleBarAdormentLayer); map.AdornmentOverlay.IsVisibleInOverlaySwitcher = false; // Create the Routine Engine. string streetShapeFilePathName = Server.MapPath(ConfigurationManager.AppSettings["StreetShapeFilePathName"]); string streetRtgFilePathName = Path.ChangeExtension(streetShapeFilePathName, ".rtg"); RtgRoutingSource routingSource = new RtgRoutingSource(streetRtgFilePathName); FeatureSource featureSource = new ShapeFileFeatureSource(streetShapeFilePathName); featureSource.Projection = proj4; routingEngine = new RoutingEngine(routingSource, featureSource); routingEngine.GeographyUnit = GeographyUnit.Meter; }