POST
|
Hi, The Mobile Map Package is best considered as a black box. You don't need to worry about exactly how the network dataset is packaged up in there (though I expect that some form of geodatabase and .tn file is in there somewhere 😀). The key part really is knowing how to load it into a RouteTask. But in short, yes, if the Pro Map has a transportation network, then it'll be included in the Mobile Map Package as part of the support data for the packaged map. You can find a little more information here: https://pro.arcgis.com/en/pro-app/latest/tool-reference/data-management/create-mobile-map-package.htm
... View more
01-03-2023
09:24 AM
|
1
|
1
|
1043
|
POST
|
Hello, and happy new year! You need to package your network dataset in a Mobile Map Package containing the map with the network dataset. With ArcMap you used to be able to export a network dataset for Runtime SDK use, but with Pro we moved to a map package approach since more often than not you'll want to use the network dataset with a map or maps (but don't worry, you don't have to use/display the map if your workflow doesn't require it - in that case the MMPK and Map are just delivery mechanisms for the network dataset). Load the MobileMapPackage, use the Maps property to read and load the ArcGISMap, and then read the TransportationNetworkDataset(s) from the map. You can then create a RouteTask from each TransportationNetworkDataset. Hope that helps!
... View more
01-03-2023
08:23 AM
|
1
|
1
|
1046
|
POST
|
Aha. Because you had posted this to the Java SDK forum, we assumed you were interested in Android, and since you asked about 200, that means the Kotlin SDK (hence we moved this to this Community place). At 100.x the SDKs that target mobile devices (iOS/iPadOS, Android) have AR Toolkit components. At 200.x, that will be the case too, but we haven't implemented that for all the SDKs quite yet. As you found, .NET has it already (although the MAUI stuff is here https://github.com/Esri/arcgis-toolkit-dotnet/tree/main/src/ARToolkit.Maui), as does Qt - those were just updates to existing toolkit components. However, Swift and Kotlin do not since that's more work to create from scratch, but it's on the roadmap. So: you can do AR with the 200.0 ArcGIS Maps SDKs for .NET and Qt now, but you'll have to wait before you can do it with the ArcGIS Maps SDKs for Swift or Kotlin. The ArcGIS Maps SDK for Java does not target iOS or Android devices, so no AR there. Does that help?
... View more
12-16-2022
02:59 PM
|
2
|
0
|
1098
|
POST
|
Hi @VHolubec, It's on the roadmap, but probably won't be ready by the next release (200.1). I can't promise anything, but I could see it coming sometime in 2023.
... View more
12-16-2022
11:16 AM
|
1
|
0
|
1111
|
POST
|
You could try distanceGeodetic(). That gives you the distance and azimuth between two points.
... View more
11-17-2022
02:28 PM
|
1
|
1
|
558
|
POST
|
Yes, you can develop and deploy an app built with any ArcGIS Runtime SDK for free. You will need to have a Developer Account (also free) and get your Lite license string from the License page. Note that if your app's needs Runtime capabilities that are not available at Lite level, then you will need to purchase appropriate Base or Standard licenses (Advanced level is not relevant to the iOS SDK). And of course there may be costs for using Location Services over the free monthly allowances.
... View more
11-10-2022
07:56 AM
|
0
|
0
|
430
|
POST
|
Hi @Anonymous User I need offline street and satellite elevation maps with routing for about a dozen countries. I have a few questions: 1. I understand that I need ArcGIS Publisher. But what version of ArcGIS Pro do I need? Pro Basic, Pro Standard, or Pro Advanced? The Publisher extension for ArcGIS Pro is only needed if you want to create an offline map package for anonymous use in our Field Apps such as Field Maps. Map and scene packages (MMPKs/MSPKs) combine multiple data sources and layer definitions in one ready-to-read map or scene definition, and ArcGIS Maps SDKs for Game Engines cannot yet read them. Instead, the Game Engine SDKs can read Scene Layer Packages (SLPKs) and Tile Packages (TPKs/TPKXs), each of which provides data for a single layer, which you can use to construct your ArcGIS Map. Those SLPKs, TPKs and TPKXs can be created in any version ArcGIS Pro (without a Publisher extension). You can use ArcGIS Pro to create a Scene Layer Package of 3D Object data or Integrated Mesh data, or a Tile Package of basemap data or LERC-encoded elevation data. 2. After I create the offline maps that are accessible through Unity, do individual users need ArcGIS subscriptions or are those offline maps covered by my subscription? They do not, no. Just distribute and use the SLPK/TPK/TPKX files and consume them in your app. As always, make sure you're honoring the data usage rights for the data you're including in your offline packages. 3. Is there any documentation or examples of how I access these offline maps from within Unity? Yes... https://developers.arcgis.com/unity/maps/tutorials/display-a-map-api/ Just reference the locally stored file instead of the service when creating each Layer. See these links for more info: https://developers.arcgis.com/unreal-engine/layers/#set-a-basemap https://developers.arcgis.com/unreal-engine/maps/elevation/#set-elevation 4. Does it matter whether maps are online or offline for routing? At this time, routing in the ArcGIS Maps SDKs for Game Engines requires a connection to a routing service. However, the map layers themselves on which you overlay the route results can be any combination of online or offline layers. The two things (routing and layers) are distinct. 5. Do individual users need ArcGIS subscriptions to do routing, or can I use my API key? They do not need ArcGIS Subscriptions, no. You can use your API Key to deliver solutions that do routing (you get 20,000 routes for free per month). Depending on the nature of the app, and the target users, some developers choose to require/let their users use their ArcGIS Subscription, and you can certainly do that, but it's not a consumer-oriented approach. If your target users are not already ArcGIS subscribers, then an API Key is the appropriate approach. Hope that helps!
... View more
11-07-2022
07:43 AM
|
1
|
0
|
944
|
POST
|
Yep. You'll want to replace the geometry. Depending on the use case you might be able to hold on to the original geometry and generate new buffers, or you might be able to buffer out from the buffered one, but that could introduce cumulative errors. Probably OK for a simple circle buffer around a point, but may get tricky with an arbitrary polygon as the original source, especially if you'll want to "shrink" the buffer.
... View more
10-21-2022
08:32 AM
|
2
|
0
|
548
|
POST
|
For performance reasons, where objects have a strong dependent relationship (e.g. a FeatureLayer is dependent on (or "owns") a FeatureTable), that is limited to a single "owner" at a time. It looks like you do not need this line: arSceneView.sceneView.scene.tables.addAll(featureTables) You are taking the feature tables that you have already created feature layers for (i.e. each FeatureTable is already "owned" by a FeatureLayer) and trying to add them to the Scene's tables collection. This will try to set the Scene as the table's owner, but the layer is already the owner. The scene's tables property is for standalone tables that are not used by a layer (perhaps they're related to features and/or don't have geometry).
... View more
10-14-2022
08:48 AM
|
0
|
1
|
562
|
POST
|
I'm not sure why the fromJSON call should have stopped working, but one option you could try (and it might make for more maintainable code) is to use the new Labeling API we added at 100.11. See https://developers.arcgis.com/qt/cpp/api-reference/esri-arcgisruntime-labeldefinition.html for more properties you can now set through the API.
... View more
09-06-2022
07:58 AM
|
1
|
1
|
778
|
POST
|
It's not planned, no. Most people will use Runtime directly against the service. In your case do you need to parse out just the compressed geometry, or would it be helpful to be able to parse the entire route result into an AGSRouteResult?
... View more
08-30-2022
10:00 AM
|
0
|
1
|
1624
|
POST
|
Hi @AndriyFedin There might be two problems. Runtime only supports LERC tiles for elevation, and not visualization. You would need to publish a service that supports one of the formats listed here. Sorry we didn't spot that sooner when you replied in the original post! Note that Runtime cannot reproject tiled images, so if you tried to display this service (WGS84) in a Web Mercator map, it would not display. That's something you can work around by suitably authoring/constructing the map. However, even if that's the case, the format can't be LERC. Hope that helps!
... View more
08-30-2022
07:48 AM
|
0
|
0
|
539
|
POST
|
I don't have a huge amount of experience here, but the resolutions look really small. Have a look at this tiling scheme: https://services.arcgisonline.com/arcgis/rest/services/Canvas/World_Dark_Gray_Base/MapServer The resolution (real world meters per pixel) you have for your global scale (1:5,910,000,000) is about the same as 1:4,500 (level 17) in the standard web mercator tiling scheme. It's about 100,000 times off from the resolution of that scale's tiles in the standard scheme. I'd have a look at the parameters you're using when exporting from Pro.
... View more
08-26-2022
10:58 AM
|
0
|
0
|
1860
|
POST
|
FYI, I built this from the Terraformer code. Hope that works for you! extension AGSGeometry {
static func decodeCompressedGeometry(_ compressedString: String, spatialReference sr: AGSSpatialReference) -> AGSPolyline? {
// Break the string up into signed parts.
// The first part is a coefficient.
// Subsequent pairs of parts make up the remaining coordinates.
let pattern = #"((\+|\-)[^\+\-]+)"#
guard let regex = try? NSRegularExpression(pattern: pattern, options: []) else {
return nil
}
let range = NSRange(compressedString.startIndex ..< compressedString.endIndex,
in: compressedString)
let components = regex.matches(in: compressedString, range: range).compactMap {
Range($0.range(at: 0), in: compressedString)
}.compactMap { range -> Double? in
let val = Int(compressedString[range], radix: 32) ?? 0
return Double(val)
}
guard let coefficient = components.first,
(components.count - 1) % 2 == 0 else {
preconditionFailure("Invalid compressed geometry. Needs coefficient plus even number of subsequent parts!")
}
var coordinatePairs = [(Double,Double)]()
for i in stride(from: 1, through: components.count - 1, by: 2) {
let pair = (components[i],components[i+1])
coordinatePairs.append(pair)
}
var xDiffPrev = 0.0
var yDiffPrev = 0.0
var x = 0.0
var y = 0.0
let builder = coordinatePairs.reduce(AGSPolylineBuilder(spatialReference: sr)) { builder, pair in
x = pair.0 + xDiffPrev
xDiffPrev = x
y = pair.1 + yDiffPrev
yDiffPrev = y
let newPoint = AGSPoint(x: x / coefficient, y: y / coefficient, spatialReference: sr)
builder.add(newPoint)
return builder
}
return builder.toGeometry()
}
}
... View more
08-23-2022
12:00 PM
|
1
|
3
|
1635
|
POST
|
So, I have some information, but it means you'll have to write some code yourself 🙂 Take a look at this code form Terraformer, which shows how to decompress this geometry using JavaScript. You'd have to translate that to Swift of course but it should show how to do it. function decompressGeometry(str) {
var xDiffPrev = 0;
var yDiffPrev = 0;
var points = [];
var x, y;
var strings;
var coefficient;
// Split the string into an array on the + and - characters
strings = str.match(/((\+|\-)[^\+\-]+)/g);
// The first value is the coefficient in base 32
coefficient = parseInt(strings[0], 32);
for (var j = 1; j < strings.length; j += 2) {
// j is the offset for the x value
// Convert the value from base 32 and add the previous x value
x = (parseInt(strings[j], 32) + xDiffPrev);
xDiffPrev = x;
// j+1 is the offset for the y value
// Convert the value from base 32 and add the previous y value
y = (parseInt(strings[j + 1], 32) + yDiffPrev);
yDiffPrev = y;
points.push([x / coefficient, y / coefficient]);
}
return points;
} This pull request also includes a test that could help. If you come up with a Swift version of this, please share! I won't have time to try until next week, but it should be achievable. For reference, here is some really old documentation that explains the process.
... View more
08-18-2022
06:44 AM
|
0
|
4
|
1650
|
Title | Kudos | Posted |
---|---|---|
1 | 12-09-2024 10:16 AM | |
2 | 12-11-2024 11:12 AM | |
3 | 11-25-2024 07:29 AM | |
3 | 11-25-2024 07:36 AM | |
4 | 11-25-2024 07:10 AM |