public ActionResult Index() { // CheckUserAccessRights("Map", "Index"); Map map = new Map("Map1", new Unit(100, UnitType.Percentage), new Unit(100, UnitType.Percentage)); map.MapUnit = GeographyUnit.DecimalDegree; map.CurrentExtent = new RectangleShape(65, 40, 75, 30); map.MapBackground = new BackgroundLayer(new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"))); LayerOverlay staticOverlay = new LayerOverlay("LayersOverlay"); WorldMapKitLayer worldmap = new WorldMapKitLayer(); staticOverlay.IsBaseOverlay = true; staticOverlay.Layers.Add(worldmap); map.CustomOverlays.Add(staticOverlay); //map.CustomOverlays.Add(new GoogleOverlay("Google Satellite Map", GoogleMapType.Normal) { IsBaseOverlay=true}); //map.StaticOverlay.Layers.Add(worldmap); map.MapUnit = GeographyUnit.DecimalDegree; string strProvincialShapeFilePath = Server.MapPath("~/Content/ShapeFiles/provicinial-boundaries/admin2_poly_32.shp"); ShapeFileFeatureLayer provinces = new ShapeFileFeatureLayer(strProvincialShapeFilePath); provinces.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(255, 186, 210, 238), GeoColor.FromHtml("#787878"), 1)); TextStyle nameText = TextStyles.CreateSimpleTextStyle("Name", "Roboto", 7, DrawingFontStyles.Regular, GeoColor.SimpleColors.Black); nameText.XOffsetInPixel = 0; nameText.YOffsetInPixel = 0; nameText.OverlappingRule = LabelOverlappingRule.NoOverlapping; provinces.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(nameText); if (settings.getLayerLanguage() == tblSetting.eLanguages.Dari || settings.getLayerLanguage() == tblSetting.eLanguages.Pashto) { provinces.Encoding = Encoding.GetEncoding(1256); } provinces.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; provinces.FeatureSource.CustomColumnFetch += FeatureSource_CustomColumnFetchMain; ShapeFileFeatureSource.BuildIndexFile(strProvincialShapeFilePath); string strCountryShapeFilePath = Server.MapPath("~/Content/ShapeFiles/international-boundaries/admin1_poly_32.shp"); ShapeFileFeatureLayer country = new ShapeFileFeatureLayer(strProvincialShapeFilePath); country.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; country.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green), 1); ShapeFileFeatureSource.BuildIndexFile(strCountryShapeFilePath); var Locations = context.tblSchools .Join(context.tblSchoolDetails, school => school.nId, detail => detail.nSchoolId,(school,detail)=>new { School=school,Detail=detail}) .Where(x => x.School.strLatitude != null && x.School.strLongitude != null) .Select(x => new { x.School.nId, x.School.strLongitude, x.School.strLatitude, x.Detail.strGenderOfSchool, x.School.nYear, x.School.strSchoolLevel }).ToList(); string prefix = "e"; if (settings.getLayerLanguage() == tblSetting.eLanguages.English) { prefix = "e"; } else if (settings.getLayerLanguage() == tblSetting.eLanguages.Dari || settings.getLayerLanguage() == tblSetting.eLanguages.Pashto) { prefix = "d"; } if (hasRights("ShowSchoolPins", true)) { InMemoryMarkerOverlay markerOverlay = new InMemoryMarkerOverlay("Male"); markerOverlay.OnClientClick = "maleMarkerClick"; markerOverlay.FeatureSource.Open(); markerOverlay.Columns.Add(new FeatureSourceColumn("id")); markerOverlay.FeatureSource.Close(); ValueMarkerStyle valueMarkerStyle = new ValueMarkerStyle("SchoolStage"); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("Teacher Training College", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "mdm.png", 20, 20), })); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("Darul-Hefaz", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "mdh.png", 20, 20), })); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("Literacy-School", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "mms.png", 20, 20), })); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("Daroul-Uloom", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "mda.png", 20, 20), })); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("Markazi Hemayawi", new PointMarkerStyle() { //WebImage = new WebImage("/images/" + prefix + "mms.png", 20, 20), })); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("TVET- Institute", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "mtn.png", 20, 20), })); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("Madrassa", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "mma.png", 20, 20), })); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("Upper Secondary", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "ml.png", 20, 20), })); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("Night Shift Upper Secondary School", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "ml.png", 20, 20), })); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("District Education Department", new PointMarkerStyle() { //WebImage = new WebImage("/images/" + prefix + "mms.png", 20, 20), })); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("Secondary", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "mm.png", 20, 20), })); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("TVET- School", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "mta.png", 20, 20), })); valueMarkerStyle.ValueItems.Add(new MarkerValueItem("Primary", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "ma.png", 20, 20), })); var schools = Locations.Where(x => x.strGenderOfSchool == "Male").ToList(); foreach (var school in schools) { if (!markerOverlay.FeatureSource.InternalFeatures.Contains(school.nId.ToString())) { var point = new PointShape(Convert.ToDouble(school.strLongitude), Convert.ToDouble(school.strLatitude)); Feature feature = new Feature(point, new Dictionary { { "SchoolStage", school.strSchoolLevel } }); feature.ColumnValues.Add("id", school.nId.ToString()); markerOverlay.FeatureSource.InternalFeatures.Add(school.nId.ToString(), feature); } } markerOverlay.ZoomLevelSet.ZoomLevel11.CustomMarkerStyle = valueMarkerStyle; markerOverlay.ZoomLevelSet.ZoomLevel11.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; map.CustomOverlays.Add(markerOverlay); InMemoryMarkerOverlay femaleMarkerOverlay = new InMemoryMarkerOverlay("Female"); femaleMarkerOverlay.OnClientClick = "femaleMarkerClick"; femaleMarkerOverlay.FeatureSource.Open(); femaleMarkerOverlay.Columns.Add(new FeatureSourceColumn("id")); femaleMarkerOverlay.FeatureSource.Close(); ValueMarkerStyle femaleMarkerStyle = new ValueMarkerStyle("SchoolStage"); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("Teacher Training College", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "fdm.png", 20, 20), })); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("Darul-Hefaz", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "fdh.png", 20, 20), })); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("Literacy-School", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "fms.png", 20, 20), })); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("Daroul-Uloom", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "fda.png", 20, 20), })); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("Markazi Hemayawi", new PointMarkerStyle() { //WebImage = new WebImage("/images/" + prefix + "mms.png", 20, 20), })); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("TVET- Institute", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "ftn.png", 20, 20), })); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("Madrassa", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "fma.png", 20, 20), })); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("Upper Secondary", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "fl.png", 20, 20), })); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("Night Shift Upper Secondary School", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "fl.png", 20, 20), })); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("District Education Department", new PointMarkerStyle() { //WebImage = new WebImage("/images/" + prefix + "mms.png", 20, 20), })); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("Secondary", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "fm.png", 20, 20), })); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("TVET- School", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "fta.png", 20, 20), })); femaleMarkerStyle.ValueItems.Add(new MarkerValueItem("Primary", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "fa.png", 20, 20), })); var femaleSchools = Locations.Where(x => x.strGenderOfSchool == "Female").ToList(); foreach (var school in femaleSchools) { if (!femaleMarkerOverlay.FeatureSource.InternalFeatures.Contains(school.nId.ToString())) { var point = new PointShape(Convert.ToDouble(school.strLongitude), Convert.ToDouble(school.strLatitude)); Feature feature = new Feature(point, new Dictionary { { "SchoolStage", school.strSchoolLevel } }); feature.ColumnValues.Add("id", school.nId.ToString()); femaleMarkerOverlay.FeatureSource.InternalFeatures.Add(school.nId.ToString(), feature); } } femaleMarkerOverlay.ZoomLevelSet.ZoomLevel11.CustomMarkerStyle = femaleMarkerStyle; femaleMarkerOverlay.ZoomLevelSet.ZoomLevel11.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; map.CustomOverlays.Add(femaleMarkerOverlay); InMemoryMarkerOverlay mixMarkerOverlay = new InMemoryMarkerOverlay("Mix"); mixMarkerOverlay.OnClientClick = "mixMarkerClick"; mixMarkerOverlay.FeatureSource.Open(); mixMarkerOverlay.Columns.Add(new FeatureSourceColumn("id")); mixMarkerOverlay.FeatureSource.Close(); ValueMarkerStyle mixMarkerStyle = new ValueMarkerStyle("SchoolStage"); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("Teacher Training College", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "bdm.png", 20, 20), })); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("Darul-Hefaz", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "bdh.png", 20, 20), })); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("Literacy-School", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "bms.png", 20, 20), })); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("Daroul-Uloom", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "bda.png", 20, 20), })); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("Markazi Hemayawi", new PointMarkerStyle() { //WebImage = new WebImage("/images/" + prefix + "mms.png", 20, 20), })); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("TVET- Institute", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "btn.png", 20, 20), })); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("Madrassa", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "bma.png", 20, 20), })); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("Upper Secondary", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "bl.png", 20, 20), })); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("Night Shift Upper Secondary School", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "bl.png", 20, 20), })); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("District Education Department", new PointMarkerStyle() { //WebImage = new WebImage("/images/" + prefix + "mms.png", 20, 20), })); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("Secondary", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "bm.png", 20, 20), })); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("TVET- School", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "bta.png", 20, 20), })); mixMarkerStyle.ValueItems.Add(new MarkerValueItem("Primary", new PointMarkerStyle() { WebImage = new WebImage("/images/" + prefix + "ba.png", 20, 20), })); var mixSchools = Locations.Where(x => x.strGenderOfSchool == "Female but have Male" || x.strGenderOfSchool == "Male but have Female").ToList(); foreach (var school in mixSchools) { if (!mixMarkerOverlay.FeatureSource.InternalFeatures.Contains(school.nId.ToString())) { var point = new PointShape(Convert.ToDouble(school.strLongitude), Convert.ToDouble(school.strLatitude)); Feature feature = new Feature(point, new Dictionary { { "SchoolStage", school.strSchoolLevel } }); feature.ColumnValues.Add("id", school.nId.ToString()); mixMarkerOverlay.FeatureSource.InternalFeatures.Add(school.nId.ToString(), feature); } } mixMarkerOverlay.ZoomLevelSet.ZoomLevel11.CustomMarkerStyle = mixMarkerStyle; mixMarkerOverlay.ZoomLevelSet.ZoomLevel11.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; map.CustomOverlays.Add(mixMarkerOverlay); } ScaleBarAdornmentLayer adormentLayer = new ScaleBarAdornmentLayer(); adormentLayer.Location = AdornmentLocation.LowerRight; adormentLayer.UnitFamily = UnitSystem.Metric; map.AdornmentOverlay.Layers.Add(adormentLayer); //LayerOverlay overlay = new LayerOverlay("LayersOverlay"); LayerOverlay dynamicOverlay = new LayerOverlay("DynamicOverlay"); //overlay.IsBaseOverlay = true; //overlay.Layers.Add("Country", country); //overlay.Layers.Add("Provinces", provinces); //staticOverlay.Layers.Add("Country", country); staticOverlay.Layers.Add("Provinces", provinces); //map.CustomOverlays.Add(overlay); map.CustomOverlays.Add(dynamicOverlay); //map.CustomOverlays.Add(overlay); map.Popups.Add(new CustomPopup("information", map.CurrentExtent.GetCenterPoint()) { AutoSize = true, IsVisible = false, HasCloseButton = false, BackgroundColor = GeoColors.Transparent }); map.Popups.Add(new CustomPopup("schoolPopup", map.CurrentExtent.GetCenterPoint()) { AutoSize = true, IsVisible = false, HasCloseButton = false, BackgroundColor = GeoColors.Transparent }); return View(map); } private void FeatureSource_CustomColumnFetchMain(object sender, CustomColumnFetchEventArgs e) { if (e.ColumnName == "Name") { int id = Convert.ToInt32(e.Id); province = context.tblProvinces.Where(x => x.nShapeFileId == id).FirstOrDefault(); if (settings.getLayerLanguage() == tblSetting.eLanguages.English && province != null) { e.ColumnValue = province.strProvince; } else if (settings.getLayerLanguage() == tblSetting.eLanguages.Dari && province != null) { e.ColumnValue = province.strProvinceDari; } else if (settings.getLayerLanguage() == tblSetting.eLanguages.Pashto && province != null) { e.ColumnValue = province.strProvincePashto; } } }