public static WorldMapKitMapOverlay AddWorldMapKitOverlay(GisEditorWpfMap map) { var wmkOverlay = new WorldMapKitMapOverlay(WmkClientId, WmkPrivateKey); wmkOverlay.TileType = TileType.HybridTile; wmkOverlay.Name = GisEditor.LanguageManager.GetStringResource("WorldMapKitName"); wmkOverlay.DrawingExceptionMode = DrawingExceptionMode.DrawException; wmkOverlay.TileBuffer = 2; wmkOverlay.DrawingException += new EventHandler <DrawingExceptionTileOverlayEventArgs>(WmkOverlay_DrawingException); if (string.IsNullOrEmpty(map.DisplayProjectionParameters)) { wmkOverlay.Projection = Layers.WorldMapKitProjection.DecimalDegrees; map.DisplayProjectionParameters = Proj4Projection.GetEpsgParametersString(4326); } else { wmkOverlay.Projection = map.MapUnit == GeographyUnit.DecimalDegree ? Layers.WorldMapKitProjection.DecimalDegrees : Layers.WorldMapKitProjection.SphericalMercator; } wmkOverlay.RefreshCache(); if (map.MapUnit == GeographyUnit.Meter || map.MapUnit == GeographyUnit.DecimalDegree) { BaseMapsHelper.RemoveAllBaseOverlays(map); map.Overlays.Insert(0, wmkOverlay); SetExtent(map); map.Refresh(wmkOverlay); } else { AddOverlayInGoogleProjection(wmkOverlay, map); } return(wmkOverlay); }
private void ApplyScaleSettings() { GisEditorWpfMap wpfMap = GisEditor.ActiveMap; var scaleLayers = wpfMap.FixedAdornmentOverlay.Layers.Where(tmpAdornmentLayer => (tmpAdornmentLayer is ScaleLineAdornmentLayer || tmpAdornmentLayer is ScaleBarAdornmentLayer)).ToArray(); foreach (var tmpLayer in scaleLayers) { if (wpfMap.FixedAdornmentOverlay.Layers.Contains(tmpLayer)) { wpfMap.FixedAdornmentOverlay.Layers.Remove(tmpLayer); } } foreach (var tmpLayer in ScaleLayers) { wpfMap.FixedAdornmentOverlay.Layers.Add(tmpLayer.ToActualAdornmentLayer()); } wpfMap.Refresh(wpfMap.FixedAdornmentOverlay); }
private bool DeleteFeatures(DataRowView dataRowView, IEnumerable <string> featureIds) { try { DialogMessage deleteMessenger = null; TransactionResult result = null; Collection <Feature> features = new Collection <Feature>(); Collection <LayerOverlay> overlays = new Collection <LayerOverlay>(); lock (SelectedLayerAdapter) { overlays = FindLayerOverlayContaining(map, SelectedLayerAdapter.FeatureLayer); foreach (var overlay in overlays) { overlay.Close(); } ChangeCurrentLayerReadWriteMode(GeoFileReadWriteMode.ReadWrite); OpenFeatureLayer(); foreach (var featureId in featureIds) { var feature = SelectedLayerAdapter.FeatureLayer.QueryTools.GetFeatureById(featureId, SelectedLayerAdapter.FeatureLayer.GetDistinctColumnNames()); features.Add(feature); } SelectedLayerAdapter.FeatureLayer.EditTools.BeginTransaction(); foreach (var featureId in featureIds) { SelectedLayerAdapter.FeatureLayer.EditTools.Delete(featureId); } result = SelectedLayerAdapter.FeatureLayer.EditTools.CommitTransaction(); } if (result.FailureReasons.Count != 0) { StringBuilder sb = new StringBuilder(); foreach (var pair in result.FailureReasons) { sb.AppendLine(pair.Value); } deleteMessenger = new DialogMessage(sb.ToString(), null); deleteMessenger.Caption = "Delete Failed"; deleteMessenger.Button = MessageBoxButton.OK; ShowMessageBox(deleteMessenger); } else { if (dataRowView != null) { CurrentDataTable.Rows.Remove(dataRowView.Row); } else { Collection <DataRow> dataRowToDelete = new Collection <DataRow>(); foreach (DataRow dataRow in CurrentDataTable.Rows) { if (featureIds.Contains(dataRow[FeatureLayerAdapter.FeatureIdColumnName].ToString())) { dataRowToDelete.Add(dataRow); } } foreach (var item in dataRowToDelete) { CurrentDataTable.Rows.Remove(item); } } foreach (var featureId in featureIds) { SelectedLayerAdapter.SelectedFeatures.Remove(featureId); } var selectionTrackOverlay = map.SelectionOverlay; var dictionary = selectionTrackOverlay.GetSelectedFeaturesGroup(SelectedLayerAdapter.FeatureLayer); if (dictionary.Count > 0) { foreach (var feature in features) { if (dictionary[SelectedLayerAdapter.FeatureLayer].Count(tmpFeature => tmpFeature.Id.Equals(feature.Id)) != 0) { string targetFeatureId = selectionTrackOverlay.CreateHighlightFeatureId(feature, selectedLayerAdapter.FeatureLayer); Feature targetFeature = selectionTrackOverlay.HighlightFeatureLayer.InternalFeatures .FirstOrDefault(f => f.Tag == selectedLayerAdapter.FeatureLayer && f.Id.Equals(targetFeatureId)); if (targetFeature != null) { selectionTrackOverlay.HighlightFeatureLayer.InternalFeatures.Remove(targetFeature); selectionTrackOverlay.HighlightFeatureLayer.BuildIndex(); } } } map.Refresh(selectionTrackOverlay); } } if (!changedLayers.Contains(SelectedLayer)) { changedLayers.Add(SelectedLayer); } return(true); } catch (UnauthorizedAccessException accessEx) { System.Windows.Forms.MessageBox.Show(accessEx.Message, "Access Denied"); GisEditor.LoggerManager.Log(LoggerLevel.Debug, accessEx.Message, new ExceptionInfo(accessEx)); return(false); } finally { CloseFeatureLayer(); ChangeCurrentLayerReadWriteMode(GeoFileReadWriteMode.Read); } }