POST
|
Hi, I think, tiles Uri must end with ".pbf": Vector Tile—ArcGIS REST APIs | ArcGIS Developers
... View more
05-02-2024
06:41 AM
|
0
|
1
|
657
|
POST
|
Hi, If I understand correctly, you can add context menus to dockpane controls using WPF way: ContextMenu Overview - WPF .NET Framework | Microsoft Learn
... View more
05-02-2024
06:29 AM
|
0
|
1
|
351
|
POST
|
Hi, You need to call MapView.Active.ZoomToAsync after creating layer: var layer = LayerFactory.Instance.CreateLayer(newUri("C:\Temp\data.gpkg\Name"), map, map.Layers.Count, "name");
var fc = (layer as FeatureLayer).GetFeatureClass();
zoomToEnv = fc.GetExtent().Clone() as ArcGIS.Core.Geometry.Envelope;
if (zoomToEnv != null) MapView.Active.ZoomToAsync(zoomToEnv);
... View more
04-25-2024
02:16 AM
|
0
|
1
|
241
|
POST
|
Hi, I have debugged on ArcGIS Pro 3.1 and found, _overview.MyMapControl.OverlayControl before adding overlay is equal null. Another one thing you need to make your OnClick() method async and add await before calling QueuedTask.Run. Without await it returns Task type object
... View more
04-24-2024
06:53 AM
|
0
|
1
|
464
|
POST
|
Hi, Your _overview.MyMapControl.OverlayControl equal null. This is the reason why you can add overlay. Create new OverlayControl, set it to _overview.MyMapControl. Then try to add overlay. How to deal with OverlayControl look at the community sample ScribbleControl_ArcGISPro
... View more
04-23-2024
12:52 AM
|
0
|
3
|
489
|
POST
|
MCT means that you must call method inside QueuedTask.Run. Like in your second code sample
... View more
04-07-2024
09:49 AM
|
0
|
0
|
442
|
POST
|
Hi, At first, SetMaxScale must be called on MCT thread inside QueuedTask.Run. After setting new values open layer properties and check is values are specified (general tab). Max value must be less then min value: I have tried vb sample from community samples with values: multiPointLayer.SetMaxScale(1000000)
multiPointLayer.SetMinScale(5000000)
And it works as expected. It could be that your values are to small or not in expected range
... View more
04-07-2024
05:40 AM
|
0
|
0
|
460
|
POST
|
I can't share the code. But you can enter to your web search engine "WPF Canvas Chart" and you will find ready solutions on GitHub or other platforms and free of charge. Check solutions which have line series charts.
... View more
04-05-2024
12:09 PM
|
1
|
0
|
419
|
POST
|
Hi, I have created profile graph on WPF Canvas control few years ago. I see some objects for profile visualization in API reference (CIMProfileFrame, CIMProfileGrid and etc.) now. There are no samples on using them. Another thing as I understand that they can work with profile graphs created using 3D Analyst extension license. More info here.
... View more
04-04-2024
10:55 PM
|
1
|
2
|
449
|
POST
|
You can call GetRecentProjectTemplates() and from ProjectEventArgs parameter directly: private void OnProjectOpened(ProjectEventArgs obj) //Project Opened event handler
{
_lastLoadedProject.ArcGisTemplate.FilePath = obj.Project.GetRecentProjectTemplates()[^1];
}
... View more
04-04-2024
03:54 AM
|
0
|
1
|
464
|
POST
|
Hi, Start listening to OnProjectOpened event. You will find project path in ProjectEventArgs parameter. private void OnProjectOpened(ProjectEventArgs obj) //Project Opened event handler
{
MessageBox.Show($"{obj.Project.Path} has opened"); //show project path
}
... View more
04-03-2024
10:18 PM
|
0
|
3
|
490
|
POST
|
I think your code goes into race condition. You don't know each part will update first MVVM or code behind on selection changed. If you started using MVVM then you need to avoid writing code in code behind.
... View more
04-02-2024
08:08 AM
|
0
|
1
|
383
|
POST
|
Hi, Your shared code is not so accurate. Code below works: Protected async Overrides Sub OnClick()
Try
Dim currentLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType(Of FeatureLayer).FirstOrDefault
If currentLayer.ConnectionStatus = ConnectionStatus.Broken Then
End If
If currentLayer.SelectionCount = 0 Then
Else
Dim out_features = "C:\PATH\file.shp"
Dim where_clause = "TYPE = 80"
Dim use_field_alias_as_name = "NOT_USE_ALIAS"
Dim sort_field = "None"
Dim progDlg = New ProgressDialog("Export map" & vbCrLf & "Go get a coffee", "Cancel")
progDlg.Show()
Dim progsrc=New CancelableProgressorSource(progDlg)
Dim outpath = System.IO.Path.GetDirectoryName(out_features)
If Not System.IO.Directory.Exists(outpath) Then System.IO.Directory.CreateDirectory(outpath)
Dim valueArray = Await QueuedTask.Run(Function()
Return Geoprocessing.MakeValueArray(currentLayer, out_features, where_clause, use_field_alias_as_name, sort_field)
End Function)
Dim flags As GPExecuteToolFlags = GPExecuteToolFlags.GPThread
Dim gpResult As IGPResult = Await Geoprocessing.ExecuteToolAsync("conversion.ExportFeatures", valueArray, Nothing, progsrc.CancellationTokenSource.Token, Nothing, flags)
progDlg.Hide()
Dim val = If(String.IsNullOrEmpty(gpResult.ReturnValue), $"Error in gp tool: {gpResult.ErrorMessages}", $"Ok: {gpResult.ReturnValue}")
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
... View more
04-01-2024
11:49 AM
|
0
|
0
|
322
|
POST
|
Hi, Your datagrid behavior implementation is redundant. You can do the same workflow in your datagrid SelectedItem binded property setter: private object _selectedBene;
public object SelectedBene
{
get { return _selectedBene; }
set {
_selectedBene = value;
OnPropertyChanged();
_ = YourWorkflow();
}
}
private async Task YourWorkflow()
{
var LayerBeni = MapView.Active.Map.FindLayers(Constants.LayerNames.Beni).OfType<FeatureLayer>().FirstOrDefault();
//ZoomTo - IT BREAKS COMMAND BINDING
await MapView.Active.ZoomToAsync(LayerBeni, SelectedBene.OID, new TimeSpan(0, 0, 1));
//Flash
var selectionDictionary = new Dictionary<MapMember, List<long>>() { { LayerBeni, new List<long>() { SelectedBene.OID } } };
SelectionSet selectionToFlash = SelectionSet.FromDictionary(selectionDictionary);
MapView.Active.FlashFeature(selectionToFlash);
} Sorry, I don't know your real structure and object types. So I improvised
... View more
03-28-2024
09:52 AM
|
0
|
3
|
429
|
POST
|
Hi, You can create CustomControl. Then customize it as you want. For example: <UserControl x:Class="RibbonControls.CustomControl1View"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ui="clr-namespace:RibbonControls"
xmlns:extensions="clr-namespace:ArcGIS.Desktop.Extensions;assembly=ArcGIS.Desktop.Extensions"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
d:DataContext="{Binding Path=ui.CustomControl1ViewModel}">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<extensions:DesignOnlyResourceDictionary Source="pack://application:,,,/ArcGIS.Desktop.Framework;component\Themes\Default.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Content="My Combobox" />
<ComboBox Grid.Row="1" />
</Grid>
</UserControl> It will look like this: I have modified RibbonControls sample
... View more
03-26-2024
02:35 PM
|
1
|
0
|
241
|
Title | Kudos | Posted |
---|---|---|
1 | 2 weeks ago | |
1 | 2 weeks ago | |
1 | 3 weeks ago | |
1 | 08-26-2024 12:32 PM | |
1 | 07-10-2024 03:23 AM |
Online Status |
Offline
|
Date Last Visited |
yesterday
|