POST
|
Hi Florian - This is a known issue (originally documented for 10.2.6): a value of 'Screen' for the AngleAlignment is not honored in static rendering mode. There is a bug and an enhancement request for it: BUG-000082987, ENH-000086717. Implementing a fix has the potential to negatively impact rendering performance (which is the key feature of using static mode for rendering), so that is likely to be a driving factor for whether this is addressed or not.
... View more
08-03-2016
11:33 AM
|
0
|
0
|
228
|
POST
|
Hi Kaushi - I think you might find these resources helpful. From MSDN, a discussion of the async/await pattern in .NET Asynchronous Programming with async and await (C#) From the ArcGIS Runtime SDK for .NET Developers Guide, using this pattern with ArcGIS Runtime Asynchronous programming—ArcGIS Runtime SDK for .NET | ArcGIS for Developers Thad
... View more
08-03-2016
10:52 AM
|
1
|
0
|
417
|
POST
|
I believe this exception is being raised by the underlying System.Net.Http.HttpClient used by the QueryTask.There's a solution to this error described here: .net - HttpClient buffer size limit exceeded - Stack Overflow, but it's only relevant if you have direct control over the HttpClient in your code (rather than going through the QueryTask, ie.). I suspect your best approach might be to try to make the response as lean as possible. If you don't need the geometry for the features, for example, you could set ReturnGeometry = false. A good start might be to restrict the fields that are returned by the query by setting the Query.OutFields property to only those you'll need in your app. If you need additional information later (geometry or attributes for a specific feature, for example) you could re-query for the extra information (maybe using the ObjectID).
... View more
10-26-2015
01:29 PM
|
1
|
0
|
704
|
POST
|
Hi Mark - You can achieve the same result with a few extra lines of code. The example below will loop thru the results of a query and union the extents of all features to build the overall extent: Envelope resultExtent = null; var filter = new Query("areaname LIKE '%red%'"); var queryTask = new QueryTask(new Uri("http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/0")); var results = await queryTask.ExecuteAsync(filter); var resultCount = results.FeatureSet.Features.Count; foreach (var f in results.FeatureSet.Features) { var ext = f.Geometry.Extent; if (resultExtent == null) { resultExtent = ext; } else { resultExtent = resultExtent.Union(ext); } } MyMapView.SetViewAsync(resultExtent);
... View more
10-23-2015
12:19 PM
|
1
|
1
|
594
|
POST
|
Hey Mike, How about if you queried the feature service for the features you need (after the Ms are updated)? If you set "ReturnM = true", you'll get the M coordinates included in the result. For example: public async Task<FeatureSet> GetFeaturesFromService(Geometry filterGeometry, string where, bool includeM, bool includeZ) { var queryTask = new QueryTask(new Uri(_serviceUrl)); var filter = new Query(where); filter.ReturnGeometry = true; filter.ReturnM = includeM; filter.ReturnZ = includeZ; filter.Geometry = filterGeometry; var result = await queryTask.ExecuteAsync(filter); return result.FeatureSet; }
... View more
10-09-2015
09:35 AM
|
0
|
1
|
1796
|
POST
|
Awesome, glad you were able to crack it! Looks like MVVM Light adds an extra layer of complexity to the binding. Thanks for posting your solution for others who will (inevitably) run into this problem. Thad
... View more
10-05-2015
10:07 AM
|
0
|
0
|
520
|
POST
|
Hi Jerome - The world cities in the sample-data folder are in geographic coordinates. Like most available basemaps, the OpenStreetMap data are in Web Mercator and shapefiles won't reproject to conform with a different coordinate system. To display the world-cities layer correctly, you can either: 1) add it to a map view that is in geographic coordinates (as the only layer, or with other WGS84 datasets, for example) or 2) reproject the shapefile into Web Mercator so it will overlay with most available basemaps. I used ArcMap to reproject the world-cities.shp dataset to Web Mercator and enclosed the result here. You should be able to add these data to your app and have them display correctly. Thad
... View more
10-05-2015
09:58 AM
|
0
|
1
|
663
|
POST
|
Hi Ron - The problem is that elements inside the MapView are not contained in the Page's control hierarchy. If you set a data context for the Page (or Window) it won't be available on things like Map and Layer. Since those things don't inherit from FrameworkElement, they won't be able to use the data context of elements that "contain" them. If you define the data source explicitly with the binding, it should work as expected. Here's an example of binding a layer's ServiceUri to a property in a ViewModel. The ViewModel has been defined as a static resource in App.xaml. <esri:ArcGISTiledMapServiceLayer ID="Basemap" ServiceUri="{Binding Source={StaticResource myVM}, Path=BaseMapUri}"/>
... View more
10-02-2015
05:17 PM
|
0
|
2
|
520
|
POST
|
... just to clarify ... The workaround described above won't result in the M values being available on the client. The features (with M) will be added to the feature service and those features will appear in the client table (when refreshed), but without the M coordinates. Reading the features into a GraphicsLayer would give you the ability to use the M values on the client.
... View more
10-02-2015
04:24 PM
|
0
|
3
|
1796
|
POST
|
Hi Mike - I gave this a try on my end, and experienced the same issue. I took a closer look and I think I've found the problem. Background: When you add a feature layer from a feature service, a local table is created for working with the features on the client. The user can make edits to this table and you can push those edits back up when you want to commit edits to the parent feature service. Attempting to add a new feature with M-values fails when calling FeatureTable.AddAsync. This is an edit to the table on the client. Without successfully making those edits, you can't push the edits to the service (FeatureTable.ApplyEditsAsync, ie). Cause: I cracked open the local (SqlLite) table and found that the shape field was not configured to use M values for feature coordinates. When looking at the traffic in Fiddler when the service is accessed (and used to create the local table), I can see the request for features does not include "returnM=true", so the features come back without those values. For display efficiency, it's better to exclude extra coordinate information for features (Z or M values, ie) if it's not needed. Unfortunately, there is no way to request that information be included when you need it. I've created an issue (bug) for this, and we can start to address it for a future release. The fix will likely include the ability to specify M or Z values be returned when you need them. By default, these values will probably continue to be excluded for performance reasons. Workaround: One way you can work around the problem is to make the edits directly to the feature service by sending a REST request straight to the service. The service expects features defined as JSON and fortunately, the Graphic class has "FromJson" and "ToJson" methods that greatly simplify that. After a feature is successfully added to the feature service, you can refresh your (local) ServiceFeatureTable to see the update on the client. If you need to manage a set of edits on the client and push them to the feature service later, you might use a GraphicsLayer locally to manage those edits. I've enclosed a project that uses a helper class ("RestRequest") to apply edits to the feature service and then refreshes the local table to see the edit. Give it a look when you have a chance, hopefully this will be a viable solution for you. Thad Tilton, Product Engineer, ArcGIS Runtime SDK for .NET
... View more
10-02-2015
03:06 PM
|
0
|
6
|
1796
|
POST
|
To add to the list of potential offenders: I also ran into this exception earlier this week. In my case, the problem was a coded value domain in the database that did not have any values defined. The empty domain didn't cause issues in ArcMap, but the runtime was unable to load any of the tables. Once values were added to the domain, ArcGIS Runtime was happy.
... View more
09-25-2015
09:42 AM
|
1
|
0
|
1618
|
POST
|
Hi Michael - One way to accomplish this would be to display the lines as graphics. Unlike other types of layers, a GraphicsOverlay (or GraphicsLayer) will allow you to assign individual symbols to each graphic (as opposed to assigning a renderer for the entire layer, ie). You could perform a hit test on the graphics (on MapViewTapped, eg.) and update the symbol (color) for the line that the user selects. Here's an example (including a button handler for creating the lines): XAML: <Grid> <esri:MapView x:Name="MyMapView" LayerLoaded="MyMapView_LayerLoaded"> <esri:MapView.GraphicsOverlays> <esri:GraphicsOverlay ID="MyLineGraphics"> <esri:GraphicsOverlay.Renderer> <esri:SimpleRenderer> <esri:SimpleLineSymbol Color="DarkGray" Width="2" Style="Dash"/> </esri:SimpleRenderer> </esri:GraphicsOverlay.Renderer> </esri:GraphicsOverlay> </esri:MapView.GraphicsOverlays> <esri:Map> <esri:ArcGISTiledMapServiceLayer ID="Basemap" ServiceUri="http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"/> </esri:Map> </esri:MapView> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top"> <Button x:Name="AddLineButton" Content="Add Line ..." Click="AddLineButton_Click"/> <RadioButton Content="Red" IsChecked="True" Checked="RadioButton_Checked"/> <RadioButton Content="Blue" Checked="RadioButton_Checked"/> <RadioButton Content="Green" Checked="RadioButton_Checked"/> </StackPanel> </Grid> Code behind (C#): public partial class MainWindow : Window { private SimpleLineSymbol _lineSymbol; public MainWindow() { InitializeComponent(); MyMapView.MapViewTapped += MyMapView_MapViewTapped; } // Do a hit test when the map view is tapped // change the color of the selected graphic (polyline) async void MyMapView_MapViewTapped(object sender, MapViewInputEventArgs e) { var graphicsOverlay = MyMapView.GraphicsOverlays["MyLineGraphics"]; var graphic = await graphicsOverlay.HitTestAsync(MyMapView, e.Position); if (graphic != null) { // Line symbol color is controlled by a radio button choice graphic.Symbol = _lineSymbol; } } // Button click handler to add lines (with the default gray symbol) private async void AddLineButton_Click(object sender, RoutedEventArgs e) { var newLine = await MyMapView.Editor.RequestShapeAsync(DrawShape.Polyline); var newGraphic = new Graphic(newLine); var graphicsOverlay = MyMapView.GraphicsOverlays["MyLineGraphics"]; graphicsOverlay.Graphics.Add(newGraphic); } // Radio button handler to determine the line color when a line is clicked private void RadioButton_Checked(object sender, RoutedEventArgs e) { _lineSymbol = new SimpleLineSymbol { Style = SimpleLineStyle.Solid, Width = 2 }; var rb = sender as RadioButton; switch (rb.Content.ToString()) { case "Red": _lineSymbol.Color = Colors.Red; break; case "Green": _lineSymbol.Color = Colors.Green; break; case "Blue": _lineSymbol.Color = Colors.Blue; break; default: break; } } }
... View more
09-17-2015
10:41 AM
|
0
|
1
|
1192
|
POST
|
I haven't had success either in getting a consistent geocode result using just a country code ("USA" seems to work, others do not). There's an example on the developers.arcgis.com site that does this successfully (https://developers.arcgis.com/en/features/geocoding/), but uses a combination of "suggest" (to get the desired country) and "find" (to retrieve the result). One option is to simply query a country boundary service for the geometry and find the center (of the extent, e.g.). For example: var queryUrl = "http://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/World_Countries_(Generalized)/FeatureServer/0"; var queryTask = new QueryTask(new Uri(queryUrl)); var queryExp = "ISO = '" + this.CountryTextBox.Text + "'"; // SG, US, DK, for example (two-letter codes) // var queryExp = "Country ='" + this.CountryTextBox.Text + "'"; // Singapore, United States, Denmark, for example var countryQuery = new Query(queryExp); var result = await queryTask.ExecuteAsync(countryQuery); if (result.FeatureSet.Features.Count > 0) { var countryExtent = result.FeatureSet.Features[0].Geometry.Extent as Envelope; var countryCenter = countryExtent.GetCenter(); await this.MyMapView.SetViewAsync(countryCenter); MessageBox.Show("Center of '" + this.CountryTextBox.Text + "' is " + countryCenter.X.ToString() + " : " + countryCenter.Y.ToString()); } else { MessageBox.Show("No results found for '" + this.CountryTextBox.Text + "'."); }
... View more
09-04-2015
12:26 PM
|
0
|
1
|
1083
|
POST
|
You can set the MapView's IsLogoVisible property to False, like this ... <esri:MapView x:Name="MyMapView" IsLogoVisible="False">
... View more
08-31-2015
03:31 PM
|
1
|
0
|
1329
|
POST
|
Are you thinking about an event, for example, that would be raised if the object (layer, e.g.) lost the server connection (or had some other server-related issue)? There's no mechanism in place for that (that I'm aware of). Instead, I think you need to be a little proactive if you want to check server status. You can do a manual check by pinging a server for a response. For example: var status = this.CheckServer("myserver.com"); if (status == System.Net.NetworkInformation.IPStatus.Success) { // ok } private System.Net.NetworkInformation.IPStatus CheckServer(string url) { System.Net.NetworkInformation.PingReply reply; using (System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping()) { reply = ping.Send(url); } return reply.Status; } ... but unfortunately, 'ping' will be disabled for many servers. Another option is to call GetAllDetailsAsync for a service (an ArcGISDynamicMapServiceLayer, e.g.). You can use that info to get the number of layers and tables in the service, metadata about all layers, the maximum record count returned, etc. (and verify that you get a response, of course). For example: var info = await arcGISDynLayer.GetAllDetailsAsync(); var layerCount = info.Layers.Count; var tableCount = info.Tables.Count; foreach (var l in info.Layers) { // get info about each layer } foreach (var t in info.Tables) { // get info about each table }
... View more
08-26-2015
11:59 AM
|
0
|
0
|
250
|
Title | Kudos | Posted |
---|---|---|
1 | 03-14-2019 01:59 PM | |
1 | 10-17-2023 12:39 PM | |
1 | 10-30-2023 11:55 AM | |
1 | 10-28-2023 12:47 PM | |
2 | 10-28-2023 11:56 AM |
Online Status |
Offline
|
Date Last Visited |
Friday
|