<\/HEAD>
Een digitale kaart bestaat meestal uit Basemaps en Vectordata, die in de vorm van lagen over elkaar worden weergegeven. Basemaps zijn georeferentieerde afbeeldingen zonder opvraagbare geografische informatie. Ze worden niet vaak bijgewerkt en dienen voornamelijk voor oriëntatie. Vectordata daarentegen zijn Geo-objecten (Features), die elk bestaan uit een geometrie en bijbehorende informatie. Ze worden meestal bovenop de Basemaps weergegeven met een geschikte symboliek. Vectordata kunnen in de Client worden gebruikt voor informeren, analyseren en ook voor gegevensverzameling.<\/P>
<\/P>
ArcGIS biedt verschillende mogelijkheden om Basemaps en Vectordata ook offline op verschillende apparaten te gebruiken. In deze Blog<\/A> wordt dieper ingegaan op Offline-Vectordata. Hieronder zullen we ons nader bezighouden met Offline-Basemaps en het gebruik ervan in apps op basis van ArcGIS Runtime<\/A>.<\/P><\/P>
<\/P>
Met alle ArcGIS Runtime SDKs kunnen gegevens van Tiled MapServices worden geëxporteerd en offline gebruikt. De procedure hiervoor is bij alle identiek. Voor de volgende stappen wordt uitgegaan van een Tiled MapService met overeenkomstige instellingen en gebruikersrechten.
Zo wordt het gedaan (ArcGIS Runtime SDK for .NET):
1. Aanmaken van een ExportTileCacheTask-object:
_exportTileCacheTask = new ExportTileCacheTask(exportArcGisTiledMapServiceLayerServiceUri);
2. Parameters voor export instellen, we willen als formaat een Tile Package, niet alle schalen en slechts een bepaald gebied
_generateTileCacheParameters = new GenerateTileCacheParameters
{
Format = ExportTileCacheFormat.TilePackage,
MinScale = CurrentEsriMapView.MinScale,
MaxScale = CurrentEsriMapView.MaxScale,
GeometryFilter = _areaToExportGraphic.Geometry.Extent
};
3. Grootte en aantal gevraagde tegels controleren met de functie EstimateTileCacheSizeAsync en indien nodig problemen afvangen.
var exportTileCacheJobStatusProgress = <\/SPAN>new<\/SPAN> Progress<\/SPAN><<\/SPAN>ExportTileCacheJob<\/SPAN>>();<\/SPAN>\nexportTileCacheJobStatusProgress.ProgressChanged += (p, q) =><\/SPAN><\/LI><\/OL>\n{<\/SPAN>\n if<\/SPAN> (q.Messages == <\/SPAN>null<\/SPAN>)<\/SPAN>\n return<\/SPAN>;<\/SPAN>\n \/\/do something<\/SPAN>\n};<\/SPAN>\n\nawait<\/SPAN> _exportTileCacheTask.EstimateTileCacheSizeAsync(_generateTileCacheParameters,\n (result, ex) => <\/SPAN>\/\/ Callback for when estimate operation has completed<\/SPAN>\n&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;;amp; += (p, q) =><\/SPAN><\/LI><\/OL>
{<\/SPAN>
als (q.Messages.Count < 1)<\/SPAN>
returnen;<\/SPAN>
_model.SetMessageInfo(<\/SPAN>string.Format(<\/SPAN>"<\/SPAN>{0}<\/SPAN>"<\/SPAN>, q.Messages[1].Description));<\/SPAN>
};<\/SPAN>
var downloadProgressChanged = <\/SPAN>new Progress<\/SPAN><<\/SPAN>ExportTileCacheDownloadProgress<\/SPAN>> ;();<\/SPAN>
downloadProgressChanged.ProgressChanged += (p, q) =><\/SPAN><\/LI><\/OL>
{<\/SPAN>
//doe iets<\/SPAN>
};<\/SPAN>
var downloadTileCacheResult = <\/SPAN>await _exportTileCacheTask.GenerateTileCacheAndDownloadAsync(<\/SPAN>
  _generateTileCacheParameters,<\/SPAN>
  downloadOptions, TimeSpan<\/SPAN>.FromSeconds(5), CancellationToken<\/SPAN>.None, generateStatusCheckProgress,<\/SPAN>
  downloadProgressChanged);<\/SPAN><\/PRE><\/P>Als alles vlekkeloos is verlopen, hebben we nu een Offline Basemap als Tile Package lokaal op ons apparaat opgeslagen.<\/P><\/P><\/P>Implementeren van Offline Basemaps in ArcGIS Runtime<\/H2><\/P>Het integreren van Offline Basemaps in de kaart is relatief eenvoudig. In alle ArcGIS Runtime SDKs is er het object ArcGisLocalTiledLayer<\/SP AN >.<\ /SPA N> We geven dit het pad naar ons Tile Package en voegen het vervolgens toe aan de LayerCollection van de kaart.<\ /P >
<\ /P >
Zo wordt het gedaan (ArcGIS Runtime SDK for .NET):<\ /P >
<\ /P >
var <\ /SP AN >arcGisLocalTiledLayer = <\ /SP AN >new <\ /SP AN > ArcGISLocalTiledLayer <\ /SP AN >( <\ /SP AN >@c:\temp\basemap.tpk <\ /SP AN >); <\ /SP AN >
var <\ /SP AN >offlineMap = <\ /SP AN >new <\ /SP AN > Map <\ /SP AN >(); <\ /SP AN >
offlineMap.Layers.Add(arcGisLocalTiledLayer);<\ /S PAN >
var mapView = new MapView { Map = offlineMap };<\ /V AR >
= mapView;<\ /PRE >
<\ /P >
<\ /P >
Meer informatie<\ /H2 >
<\ /P >
Startpagina<\ /A > voor ArcGIS ontwikkelaars<\ /LI >
Blog<\ /A > met meer informatie over ArcGIS Runtime en Offline<\ /LI >
Blog<\ /A > specifiek over Offline Vector Data<\ /LI >
Voorbeeld App Collector Light op GitHub<\ /A >, de snippets in de blog zijn daaruit gehaald<\ /LI ><\ /BODY ><\ /HTML >