POST
|
Hi, We are loading WebMap from portal, where RefreshInterval for some layers have been set. Using fiddler, I can see that new export requests are performed for the layer at the set interval on my development environment. Using the same version of the software against a WebMap in customer environment does not refresh. Using fiddler for verification, no new export requests are sent in customer environment, but they are sent on development machine. Using Snoop to inspect the ArcGISMapImageLayer,RefreshInterval I can see it is set to 00:00:12 in both environments. Comparing the json for the WebMap and layer, they are the same, except for some field names matching, min scale and full extent. Enabling supportedExtensions KmlServer was the last idea based on where they differ, but this had no effect. We have also tried setting refresh to other layers, just to see if that causes different behavior. Clearing Internet Explorer cache between every change. The only difference I can see now in export requests, is that on the computer where refresh works, both refresh requests (MapServer/export?dpi=96....and so on) and those related to navigation contain the extra parameters in the query string i.e: _ts=1549457143832 layers=show:0 On the client where refresh doesn't work, these parameters are not present in normal export requests. I assume _ts is to avoid picking up images from IE cache with different URL for each request. layers I can't see should make any difference, from what I can read from Export Map—ArcGIS REST API: Services Directory | ArcGIS for Developers , and all the layers are displayed in the map when I see exported images. Using ArcGIS Runtime for .NET 100.4, and ArcGIS Server 10.6 (and same version of portal). Sample information about operational layers from customer "id": "pov_tet_5470",
"layerType": "ArcGISMapServiceLayer",
"url": "https://serverurl.com/agskart/rest/services/Product/pov_tet/MapServer",
"visibility": true,
"opacity": 1,
"title": "Layer name",
"itemId": "5e6b8ff78c68489b84f7b29d6809488b",
"refreshInterval": 0.2,
"layers": [
{
"id": 0,
"popupInfo" : {}
}
Information about the same layer in development "id": "rad_7401",
"layerType": "ArcGISMapServiceLayer",
"url": "https://serverurl.com/arcgis/rest/services/radioresources/MapServer",
"visibility": true,
"opacity": 1,
"title": "layer name",
"itemId": "2698b76d9b8146628ab88b051e678f12",
"refreshInterval": 0.2,
"layers": [
{
"id": 0,
"popupInfo" : {}
} Does anyone have any idea on why it works in one environment, and not in another?
... View more
02-06-2019
05:37 AM
|
0
|
7
|
1321
|
POST
|
Quick summary from Keith Gemeinhart's suggestion, put into practice: - Approach with creating a Scene with the layers works - Involves a few additional loadAsync on the various elements; just on the Scene is not enough - Not lightning fast, and does not work fast enough for mouse move and status bar (click and display works just fine) - Cached Tiled Elevation Service from Organization settings is unfortunately not available from HelperServices Class, which is just silly.
... View more
02-05-2019
11:52 AM
|
0
|
0
|
2024
|
POST
|
Currently we believe it makes sense to keep the camera angle locked when the user choose to. Using the concept from GeoView viewpoint synchronization—ArcGIS Runtime SDK for .NET Samples | ArcGIS for Developers , I have changed the code like this. private void OnNavigationComplete(object sender, EventArgs eventArgs)
{
// Get a reference to the MapView or SceneView that raised the event
GeoView sendingView = (GeoView)sender;
// Get a reference to the other view
if (sendingView is MapView)
{
// Intentionally not doing anything here
}
else
{
MyMapView.SetViewpoint(sendingView.GetCurrentViewpoint(ViewpointType.CenterAndScale));
}
}
private void OnViewpointChanged(object sender, EventArgs e)
{
// Get the MapView or SceneView that sent the event
GeoView sendingView = sender as GeoView;
// Only take action if this geoview is the one that the user is navigating.
// Viewpoint changed events are fired when SetViewpoint is called; This check prevents a feedback loop
if (sendingView.IsNavigating)
{
// If the MapView sent the event, update the SceneView's viewpoint
if (sender is MapView)
{
// Get the viewpoint
Viewpoint updateViewpoint = MyMapView.GetCurrentViewpoint(ViewpointType.CenterAndScale);
UpdateSceneWithCameraLock(updateViewpoint);
}
else // Else, update the MapView's viewpoint
{
// Get the viewpoint
Viewpoint updateViewpoint = MySceneView.GetCurrentViewpoint(ViewpointType.CenterAndScale);
// Set the viewpoint
MyMapView.SetViewpoint(updateViewpoint);
}
}
}
private void UpdateSceneWithCameraLock(Viewpoint updateViewpoint)
{
MapPoint lookAtPoint = updateViewpoint.TargetGeometry as MapPoint ?? updateViewpoint.TargetGeometry.Extent.GetCenter();
var lookAtPointTransformed = (MapPoint)GeometryEngine.Project(lookAtPoint, MySceneView.SpatialReference);
// Keep current camera settings
var previousCamera = MySceneView.Camera;
// Set new viewpoint
MySceneView.SetViewpoint(updateViewpoint);
var newCamera = MySceneView.Camera;
// Tilt camera, looking at new center point
var targetCamera = new Camera(lookAtPointTransformed, newCamera.Location.Z, previousCamera.Heading, previousCamera.Pitch, 0);
MySceneView.SetViewpointCamera(targetCamera);
} I tilt the camera to a 70 degree pitch. I then pan around the MapView. On every change of MapView.ViewpointChanged, the camera pitch for the scene is reduced every the event is raised for MapView, resulting in a pitch of 0 towards the end. The heading is also adjusted towards 0. This effect is extremely visible around the equator, but less so in the north. Why is this, and how can I avoid? I haven't found a better way than this to keep the camera altitude than first calling SetViewpoint, and then moving the camera. Suggestions are welcome for doing both in the same operation. I feel like I'm missing a method on the Camera to set a new lookAtPoint while maintaining the rest of the parameters. While this example is based on synchronized MapView with SceneView, I would like to do the same for zooming to an extent or points, while keeping the same camera orientation.
... View more
01-21-2019
07:44 AM
|
0
|
0
|
709
|
POST
|
Thank you for your suggestion, Keith Gemeinhart. I'll see if I can use your suggestion to work this out I have no internet access from my clients, so I need to detect the elevation source from my WebMap, but I should be able to make that work. I might even be able to get this from my portal configuration through HelperServices.ElevationService Property. I won't be able to test this until Monday, but would you happen to know how expensive this operation would happen to be, in terms of querying every time the cursor is moved in terms of request being sent to the image server every time? There is some delay built in, to reduce CPU usage already. If the same thing happens behind my SceneView, I guess I can't discriminate between 2D and 3D However, I do expect that the elevation information for my SceneView will already have this information present when I navigate.
... View more
01-18-2019
08:24 AM
|
0
|
2
|
2024
|
POST
|
We have a similar issue where we want elevation data for the mouse cursor in a status bar for MapView. In SceneView, we use get the location of the cursor from the base surface, which includes altitude. Ideally, we would like the same for MapView. Based on Michael Branscomb answer, this doesn't seem very likely. My MapView contains a WebMap configured in a portal, so I'm looking for a solution that is not too complex and requires special configuration of the application to be able to do this. While Keith Gemeinhart's suggestion might be a way to go, where I might be able to configure a hidden elevationsource (I've noticed this layers shows up as ArcGisTiledLayer), and look for layers where the portal item is a Image Service, and do some magic there, but I fear for the complexity. Another option might to do an Identify of sorts to get the height, but then the trouble would be to know which layer to identify, and get the right information. This might also be a bit too expensive for the status bar. For the MapView, I might put the elevation info somewhere else, that requires specific user interaction to display this. Any suggestions on how to go about this, or might ScreenToLocation support elevation information in the next version?
... View more
01-17-2019
09:50 AM
|
0
|
4
|
2024
|
POST
|
Hello, When performing SceneView.SetViewpoint with a viewpoint without camera details, the scene snaps to 2D view where the camera looks straight down. What I'm looking at, is the ability for the user to toggle a lock of the camera orientation when performing SetView operations. Scenario 1: When synchronizing the scene with a MapView, and I navigate the MapView, I imagine it might be interesting to keep the camera at the same angle and heading as before the operation. Scenario 2: Having found "the perfect camera angle", and I i.e. zoom to a vehicle in some list outside of the map itself, I would like to keep the current camera orientation. I'm not sure if this is some crackpot developer idea that doesn't go well with real life usage, or if the idea has some merit. Before I dig too deep, I would love to get some feedback if it makes sense at all Known issues: - Avoid ending up with for example a 45 degree angle horizon - Ending up inside of mountains or buildings (might be able to recover by getting camera point elevation, and Elevate until I'm at a safe distance?) - Avoid synchronize camera adjustments after SetViewpoint back to the MapView (scenario 1) - Probably can't do this when zooming to an envelope - Inconsistensies in behavior (see previous issue)
... View more
01-17-2019
09:29 AM
|
0
|
1
|
863
|
POST
|
While I suspect Windows Server 2012 and high DPI might be outside of your expertize, do you have any experience on enabling per monitor there? I'm not asking for the solution, mind you; just in case you have any reference guide for this? By the way, do you have any estimated date for the next version of the runtime? I keep checking the blog, as I'm rather excited about any new version
... View more
01-04-2019
02:45 PM
|
0
|
1
|
1107
|
POST
|
When hosting the application on Citrix using Windows Server 2012, is there a way to support High DPI there? I've tried to research this, but the sample from microsoft Developing a Per-Monitor DPI-Aware WPF Application - Windows applications | Microsoft Docs involves deriving from different classes etc. I've set the app.manifest based on what I see in the link you provided, but at present I have no way of truly knowing of this will make a difference to the resampling, even if the windows use different DPI.The document in your link says Windows 10 Anniversary update is required, but figuring out what is actually by Citrix and related setup is a bit much As mentioned in the previous post, my tiled layer has LoD 625, 1250, etc, but we still get fuzzy images when at those scales.
... View more
01-04-2019
02:29 PM
|
0
|
1
|
1107
|
POST
|
Jennifer Nery I will review error handling tomorrow to see if I can get more details. However, as I only experience the blank map rarely, and only in production, I'm trying to gather more details in regards to possible causes. - I use Integrated Windows Authentication (I've clarified in the original post) - Are cookies involved with IWA (I imagine they are)? - What is their default duration? - When clearing cookies, do i clear the cookies for individual layer URI or the Portal URI? - I do not have IWA in development environment, and test environment where IWA is enabled I am not able to develop.
... View more
01-02-2019
11:49 AM
|
0
|
0
|
926
|
POST
|
Thanks, Jennifer Nery I will give that a go. We don't have any sign-in logic in our application, as we leave it all to windows authentication etc. So clearing cookies should help make a difference? With my symptoms with empty layer list and blank map, is it likely that what we experience a single-sign on issue? Is there a way that I can manually prove this is the case, such as modifying existing cookies somewhere in an attempt to recreate the issue, and be confident this is the issue we experience?
... View more
12-26-2018
01:20 PM
|
0
|
2
|
926
|
POST
|
Hi, We occasionally experience an issue where the map is blank when loading from portal, using Integrated Windows Authentication. I do not know if this is the actual culprit, but it is the best lead I have. Unfortunately I do not have a lot of information to go on, and no direct access to production logs. Graphics in GraphicsOverlays are drawn, but the map itself is blank, and my layer list is empty. My map has spatial reference, however I am not not sure which one. I assume 4326, since that is the reference system of my graphics. I am unable to locate any exceptions related to loading maps in my client log. The problem seems to occur when starting application immediately after logon, but this is in no way consistent. Restarting the application resolves the issue. Based on the time this occurs, I can find the following in the web server logs (error 401), but unfortunately I am not 100% sure if these messages actually relate to the user who experienced the issue, but it is the only iffy thing that could be found at the actual time the problem occurred 2018-11-22 09:37:29 10.163.24.55 GET /portal/sharing/rest/portals/self f=json 443 - 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 401 2 5 1 2018-11-22 09:37:29 10.163.24.55 GET /portal/sharing/rest/community/users/ABC123@DOMAIN f=json 443 - 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 401 2 5 2 2018-11-22 09:37:30 10.163.24.55 GET /portal/sharing/rest/content/items/d79f5f97ce8d40c2994ebd4c7307edcc f=json 443 - 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 401 2 5 2 2018-11-22 09:37:30 10.163.24.55 GET /portal/sharing/rest/content/items/d4cc357bf7ae4063b9f605fc1bfb917c f=json 443 - 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 401 2 5 1 2018-11-22 09:37:30 10.163.24.55 GET /portal/sharing/rest/content/items/b561528f264b49d98a231db6502750ed f=json 443 - 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 401 2 5 0 2018-11-22 09:37:30 10.163.24.55 GET /portal/sharing/rest/content/items/5fe32ae4389f446d9a2c5737a191ccff f=json 443 - 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 401 2 5 0 2018-11-22 09:37:30 10.163.24.55 GET /portal/sharing/rest/content/items/d3bf554220c949ec858a8bc2f3834422 f=json 443 - 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 401 2 5 2 2018-11-22 09:37:30 10.163.24.55 GET /portal/sharing/rest/content/items/05b13feaee42419ba0302b77a02c4520 f=json 443 - 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 401 2 5 2 2018-11-22 09:37:30 10.163.24.55 GET /portal/sharing/rest/content/items/0d80403a114a40a1873ff31265fe553c f=json 443 - 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 401 2 5 2 2018-11-22 09:37:30 10.163.24.55 GET /portal/sharing/rest/content/items/b561528f264b49d98a231db6502750ed f=json 443 DOMAIN\ABC123 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 200 0 0 134 2018-11-22 09:37:31 10.163.24.55 GET /portal/sharing/rest/content/items/05b13feaee42419ba0302b77a02c4520 f=json 443 DOMAIN\ABC123 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 200 0 0 151 2018-11-22 09:37:31 10.163.24.55 GET /portal/sharing/rest/content/items/8691e1f36bfc413789f9585c94c5ebe0 f=json 443 DOMAIN\ABC123 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 200 0 0 223 2018-11-22 09:37:31 10.163.24.55 GET /portal/sharing/rest/content/items/7121939e6ee54730bdf3a44bd0c64fa4 f=json 443 DOMAIN\ABC123 10.11.12.13 ArcGISRuntime-NET/100.3+(Windows+6.3.9600;+Win64;+.NET+4.7.1) http://myApplication.app/ 200 0 0 269 I do not have single sign on in my development environment, so I have tried to recreate the issue by changing permissions for a Web Map, or individual layers, but that result in exceptions in my logs, and example message from the server (HTTP status 200) {"error":{"code":403,"messageCode":"GWM_0003","message":"You do not have permissions to access this resource or perform this operation.","details":[]}}. Does anyone have any suggestions on where to start investigating, or what this issue might be?
... View more
12-20-2018
07:57 AM
|
0
|
5
|
1086
|
POST
|
Hehe. You and me both. Thought I was the one. Resolving https://community.esri.com/thread/225589-arcgis-runtime-1004-draws-basemap-really-slow-when-zooming-with-the-mouse-wheel would give you a satisfying end of your work week
... View more
12-14-2018
03:51 PM
|
0
|
0
|
1704
|
POST
|
Binding? Referring to the whole message, or the ArgumentOutOfRange part? Or wrong post?
... View more
12-14-2018
03:42 PM
|
0
|
2
|
1704
|
POST
|
Thanks. I was suspecting something like this, but since I see the same issue at scales that match the LoDs, I wasn't sure that was the case or not. While multiple monitors hasn't been an issue for the attached samples, I'll still look into the PerMonitorDPI, and possibly Vector tiles. Thanks
... View more
12-14-2018
03:24 PM
|
0
|
0
|
1107
|
POST
|
For anyone who reads this in the future, I'm adding a quick summary of what I did. My main hurdle was that I need the same graphics in multiple maps, which is the main reason for this approach. While I don't know if it is the ideal choice, it works quite well for me: - GraphicsProvider, as part of the observer pattern (Publish, Delete) - GraphicsObserver, which observes the provider, and is implemented on a GraphicsOverlay derived class (or operates on graphics overlay to make it cleaner) - Remember weak references, or at least to call dispose and cleanup if you dispose of a map, otherwise you'll have loads of memory leaks that most likely will frustrate you - Class deriving from Graphic, in my case MapGraphic. Properties for TargetLayer (and GroupLayer, in my case) - Synchronise your operation if adding to GraphicsOverlay (as of 100.4) from different threads (Adding Graphic to GraphicsOverlay.Graphics throws ArgumentOutOfRangeException) - For multiple maps, you might need to create copies of the graphics on add, as they might not want to live in multiple maps, and then update the copies if they already exist New maps will create GraphicsOverlay with observer, and subscribe to changes from the provider. If you don't use multiple maps with the same graphics, you probably don't need this approach, and can do what Morten says above, or see some of the other posts on MVVM in the forums
... View more
12-14-2018
02:39 PM
|
0
|
4
|
1704
|
Title | Kudos | Posted |
---|---|---|
1 | 11-01-2023 02:27 PM | |
1 | 02-26-2019 03:36 PM | |
1 | 08-17-2017 02:09 AM | |
1 | 12-14-2018 11:57 AM | |
1 | 12-14-2018 08:21 AM |
Online Status |
Offline
|
Date Last Visited |
11-13-2023
11:33 PM
|