Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
            }
        }