|
POST
|
Brian Crist, oh dang, sorry for the bogus recommendation. I or someone on the team will look into your issues with picture marker symbol when we get a spare minute.
... View more
09-29-2020
01:41 PM
|
0
|
1
|
5552
|
|
POST
|
Brian Crist, Sounds like there are a few things going on here. Before we diagnose the issues you're seeing with PictureMarkerSymbol, let me point you towards our sample demonstrating the ImageOverlay. arcgis-runtime-samples-qt/ArcGISRuntimeSDKQt_CppSamples/Scenes/AnimateImagesWithImageOverlay at master · Esri/arcgis-run… What you're describing sounds like the ideal use case for an ImageOverlay. Please take a look at our sample code, which shows how to use this workflow with png images and QImage.
... View more
09-29-2020
01:16 PM
|
0
|
3
|
5552
|
|
POST
|
Hi Tim Confare, Thanks for reaching out to the team. In our example code, the "parent" is the MapView object. I can't tell from your code if that's the case, but can you double check that? This might work: calloutData: mapView.calloutData
... View more
09-29-2020
12:37 PM
|
0
|
19
|
3143
|
|
POST
|
Hi Brian Keller, I'm assuming that identify queries are not any different and get added to the end of the queue. Is that accurate? Correct. Is there any way to prioritize the identify queries over the outstanding extent queries? Unfortunately, no. Any network requests made to the same host would be subject to the same queueing behavior internally. If instead of identifyLayersWithMaxResults, we would use identify for individual layers, would it make any difference, or are they just stacked on the queue anyway? That is hard to definitively answer. The Runtime does do more work with identifyLayersWithMaxResults, compared to identifyLayerWithMaxResults when you know which layer the GeoElement is in. That would need to be weighed against any added overhead and data structures required to support calling identifyLayerWithMaxResults and knowing which Layer(s) to check. That is the reason we support identifyLayersWithMaxResults so you don't need to keep track, but with ~50-ish layers that could result in a lot of network traffic for the Runtime to check every layer. So, the simple answer is that yes, if you use identifyLayerWithMaxResults it could save a lot of extra network traffic. The flipside is that that could be tricky to implement since there may be no consistent way to build such a mapping of GeoElements and the layers they belong to. See this important best practice (section Object uniqueness) Qt SDK best practices—ArcGIS Runtime SDK for Qt | ArcGIS for Developers Thanks! Identify performance is one of the main issues that our users have. We get user complaints on this frequently, that identify appears to "hang" and not respond after panning the map. Please let me know if there are any options we have to improve this. Thanks! Some options are to use Enums.FeatureRequestModeManualCache mode, but that is not always simple since users don't see the latest data without some manual refresh support. Another option is to limit the number of layers that are visible in your map at any given time. This might make the biggest difference, especially hiding any feature-dense layers before performing an identifyLayerWithMaxResults. https://developers.arcgis.com/qt/latest/qml/guide/qt-sdk-best-practices.htm
... View more
09-28-2020
03:56 PM
|
0
|
0
|
969
|
|
POST
|
Hi Brian Crist, Thanks for reaching out the Runtime Qt team. Unfortunately no, there is no way to do this. If it's something you want, please put in an idea over here: ArcGIS Ideas This one sounds similar, but not sure if it's exactly the same. https://community.esri.com/ideas/18740
... View more
09-28-2020
03:44 PM
|
1
|
1
|
944
|
|
POST
|
Brian Keller, >I would love to know how HTTP requests are queued or batched with the Qt runtime and if this is configurable... We use QNetworkAccessManager internally, which is likely why you see requests getting queued up. QNetworkAccessManager Class | Qt Network 5.15.1 >Note: QNetworkAccessManager queues the requests it receives. The number of requests executed in parallel is dependent on the protocol. Currently, for the HTTP protocol on desktop platforms, 6 requests are executed in parallel for one host/port combination. So even if the responses are 304, we still have to wait for that to come back and with ~6X requests I can see what you are describing as being a bottleneck that can actually make overall performance worse. There are some follow up questions in your last reply that would be better served as new posts so we can look into them. As for this issue, I will raise what you described internally but I would urge you to follow up with Esri Support so we can be sure to track this. Requests taking longer overall is not the intended outcome. I did get some ideas for general optimizations you can do from my colleagues. Some of these only work if you're able to configure the services: >* If they are not editing the layers, they can make them read-only. Then the SDK will not use feature tiling if number of features doesn't exceed maxRecordCount >* For editable layers, see if they can enable PBF also >* Can use MANUAL_CACHE mode and populate the features only when required. (we now also have LoadSettings::setFeatureRequestMode) >...Only thing to note is that maxRecordCount could be tileMaxRecordCount of the service.
... View more
09-28-2020
09:09 AM
|
0
|
0
|
2777
|
|
POST
|
Brian Keller, >and I think by default it uses OnInteractionCache, right? Correct. >We use QML... Thanks for confirming that. >I fired up the 100.7 app and 100.9 app to see the parameters being sent. Approximately 6 queries per layer on 100.9 on a swipe of the map to the right, with just 1 query in 100.7 I checked with the team that implemented this feature and here is what I found out. Feature tiling is still supported even when PBF is not, so this is the expected behavior you are seeing. In this case, instead of a single large request for all features, it will request tiled sections with fewer features for each tile. There is some uncertainty about how much overall data is being requested, but it is possible that it will be more now. Previously with a single request, you would be limited by the service's maxRecordCount. Now with the tiled requests, all of those smaller requests may add up to more features overall than the maxRecordCount. So overall, each of the 6 requests should be requesting less data compared to the single request at 100.7. Can you check this and see if the data payload for the increased requests at 100.9 is less, the same (roughly) or more than the single request at 100.7?
... View more
09-24-2020
04:44 PM
|
0
|
2
|
2777
|
|
POST
|
Hi Brian Keller, Thanks for reaching out to us about this. There are a few things at play here. If you are seeing JSON responses, then the Runtime is not making the newer requests which would be coming back in PBF format as you indicated. Can you check the services you are using to see if they support this newer feature? You need to check for these two attributes: supportsCoordinatesQuantization supportsQueryWithResultType For example you can see both of these are set to true with this service. https://services.arcgis.com/jIL9msH9OI208GCb/ArcGIS/rest/services/ACS_2016_Tracts_Education/FeatureServer/0?f=pjson If this was working properly, there should be no need to fallback to the previous/older way of requesting the data, so having a switch shouldn't be needed. It looks like there is something else at play in this case. Can you check the FeatureRequestMode that is set? - Geodatabase Enums | ArcGIS for Developers I am surprised to hear that more requests are going out with 100.9 compared to 100.7. I would like to get to the bottom of that. If you set the FeatureRequestMode on the ServiceFeatureTable to FeatureRequestMode::OnInteractionCache, do you see the performance improve (a reduction in network requests) back to 100.7 levels? ServiceFeatureTable Class | ArcGIS for Developers You can also set the feature request mode via the LoadSettings for the map. That will filter down to all feature tables if you are using a web map. That way you don't need to programmatically walk the entire map to get all the tables and set the request mode on each one. Here's a way to do that: LoadSettings* loadSettings = new LoadSettings(this);
loadSettings->setFeatureRequestMode(FeatureRequestMode::OnInteractionCache);
Map* map = new Map(QUrl("your webmap url here"), this);
map->setLoadSettings(loadSettings); Also, I am assuming you're using the C++ SDK. Let me know if you're using QML and I can tweak the recommendations and code snippets accordingly.
... View more
09-24-2020
01:42 PM
|
0
|
4
|
2777
|
|
POST
|
Hi rajni sharma. We are targeting having 100.9 released by the end of the August 2020. That is our current target, but I cannot guarantee it. We're working hard to make sure it happens.
... View more
08-18-2020
06:53 AM
|
1
|
0
|
1529
|
|
POST
|
Hi Jessica Talbot, File geodatabases inside map packages (MPKs and MPKXs) can have their data modified. If this isn't working we may have a bug somewhere. Data created as CreateRuntimeContent in ArcMap or Mobile Map Packages from Pro (MMPK) cannot have their data modified as they are stored in runtime GDBs. You can add feature classes to a file GDB in a MapPackage using GP tools.
... View more
08-14-2020
11:40 AM
|
0
|
0
|
966
|
|
POST
|
>What was the serialnmea issue you found with 5.15.0 and 100.9-dev? It was the one I mentioned, QTBUG-85636. We were using that functionality in some of our automated tests and they stopped working due to that problem when we upgraded to Qt 5.15.
... View more
08-06-2020
07:43 AM
|
0
|
1
|
3366
|
|
POST
|
Christopher Swingley, We are wrapping up the 100.9 release right now. While I cannot promise any particular date, I can say it should be before the end of August 2020. That is subject to change. Unfortunately there is no early access for 100.9 right now. Hopefully we can get things finished up and out the door soon for you. We're working hard to make it happen! Our team ran into a similar problem with the serialnmea position plugin, but that problem also happens with Qt 5.15.0. Hopefully this isn't the one you're referring to, since as far as I know it is still a problem. [QTBUG-85636] [Regression] Qml Positioning with nmea source file does not work - Qt Bug Tracker
... View more
08-05-2020
04:40 PM
|
0
|
3
|
3366
|
|
POST
|
Hi john marker, It sounds like there is some confusion about some C++ concepts. The Runtime SDK headers provide the declaration of the classes, but as the consumer of these objects, it is your responsibility to make sure they are initialized properly. >I assumed m_polylineBuilder was a default member variable within the class Which class? I assume that is a class you are working with and not one of the classes/files that are included with the Runtime SDK. Here's an example of creating a PolylineBuilder object. Header file: namespace Esri
{
namespace ArcGISRuntime
{
class Map;
class MapQuickView;
class PolylineBuilder; // <====== forward declaration
}
}
#include <QObject>
class Untitled107 : public QObject
{
Q_OBJECT
Q_PROPERTY(Esri::ArcGISRuntime::MapQuickView* mapView READ mapView WRITE setMapView NOTIFY mapViewChanged)
public:
explicit Untitled107(QObject* parent = nullptr);
~Untitled107() override;
signals:
void mapViewChanged();
private:
Esri::ArcGISRuntime::MapQuickView* mapView() const;
void setMapView(Esri::ArcGISRuntime::MapQuickView* mapView);
Esri::ArcGISRuntime::PolylineBuilder* m_polyBuilder = nullptr; // <====== declared as a member variable for this project
Esri::ArcGISRuntime::Map* m_map = nullptr;
Esri::ArcGISRuntime::MapQuickView* m_mapView = nullptr;
};
And then in the .cpp file, you can include the header and initialize the object #include "Untitled107.h"
#include "Basemap.h"
#include "Map.h"
#include "MapQuickView.h"
#include "PolylineBuilder.h" // <=== include Runtime SDK header for this object
#include <QUrl>
using namespace Esri::ArcGISRuntime;
Untitled107::Untitled107(QObject* parent /* = nullptr */):
QObject(parent),
m_polyBuilder(new PolylineBuilder(SpatialReference::wgs84(), this)), // <=== initialize the object
m_map(new Map(Basemap::topographic(this), this))
{
}
Untitled107::~Untitled107()
{
}
This is an example of adding a PolylineBuilder to one of our template projects.
... View more
07-22-2020
11:51 AM
|
1
|
1
|
2603
|
|
POST
|
Yes, you got it. We provide .h extension header files, so they must be included with the extension. Yes, you'd include PolylineBuilder.h to get access to that class and have a m_polylineBuilder member variable.
... View more
07-22-2020
09:14 AM
|
0
|
3
|
2603
|
|
POST
|
Hi john marker, We provide some Qt project include files to set everything up. They are included in the ideintegration folder included with the setup. If you create one of our project templates, you can see how they look. It usually looks like this: ARCGIS_RUNTIME_VERSION = 100.8
include($$PWD/arcgisruntime.pri) And then inside the arcgisruntime.pri file that comes with a template, it will include either sdk/ideintegration/esri_runtime_qt.pri (for Widgets) sdk/ideintegration/arcgis_runtime_qml_cpp.pri (for Qt Quick) You can alternately include either of those files directly in your Qt project. Those will setup your compiler include paths as well as the linker paths. Let us know if that gets things working for you.
... View more
07-21-2020
05:42 PM
|
1
|
5
|
2603
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | a month ago | |
| 1 | 10-22-2025 03:59 PM | |
| 1 | 06-18-2025 10:30 AM | |
| 1 | 06-18-2025 08:43 AM | |
| 1 | 05-15-2025 01:10 PM |
| Online Status |
Offline
|
| Date Last Visited |
a month ago
|