<\/HEAD>
Mapy obvykle sestávají z Basemap Layers pro orientaci a Operational Layers pro vizualizaci, dotazování, úpravy a analýzu geo-informací. V ArcGIS se rozlišují dva typy Basemaps<\/A>: Raster Tile Services (kešované Map Services a Image Services) a ještě poměrně mladé Vector Tile Services.<\/P><\/P>
<\/P>
Odkaz na Live Mapu<\/A><\/P><\/P>
<\/DIV>
Pro offline použití Basemaps v
ArcGIS Runtime<\/A> lze již dlouhou dobu exportovat Tile Packages (.tpk) přímo z Raster Tile Services. Novinkou je nyní možnost exportovat oblasti z Vector Tile Services a používat je lokálně jako Vector Tile Packages (.vtpk):<\/DIV><\/P>
3. Vytvoření a spuštění úkolu, parametru a jobu
V následujícím kódu jsou exportována pouze data (.vtpk) a nikoli styl.<\/P>
<SPAN class="comment token">\/\/ Vytvoření úkolu<\/SPAN>
<SPAN class="keyword token">var<\/SPAN> exportTask <SPAN class="operator token">=<\/SPAN> <SPAN class="keyword token">await<\/SPAN> ExportVectorTilesTask<SPAN class="punctuation token">.<\/SPAN><SPAN class="token function">CreateAsync<\/SPAN><SPAN class="punctuation token">(<\/SPAN>portalItem<SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">;<\/SPAN>
<SPAN class="comment token">\/\/ Vytvoření nové instance parametrů<\/SPAN>
<SPAN class="keyword token">var<\/SPAN> parameters <SPAN class="operator token">=<\/SPAN> <SPAN class="keyword token">new<\/SPAN> <SPAN class="token class-name">ExportVectorTilesParameters<\/SPAN><SPAN class="punctuation token">(<\/SPAN><SPAN class="punctuation token">)<\/SPAN>
<SPAN class="punctuation token">{<\/SPAN>
AreaOfInterest <SPAN class="operator token">=<\/SPAN> exportArea<SPAN class="punctuation token">.<\/SPAN>Geometry<SPAN class="punctuation token">,<\/SPAN> <SPAN class="comment token">\/\/ oblast pro export<\/SPAN>
MaxLevel <SPAN class="operator token">=<\/SPAN> exportTask<SPAN class="punctuation token">.<\/SPAN>VectorTileSourceInfo<SPAN class="punctuation token">.<\/SPAN>LevelsOfDetail<SPAN class="punctuation token">.<\/SPAN>Count <SPAN class="operator token">-<\/SPAN> <SPAN class="number token">1<\/SPAN> <SPAN class="comment token">\/\/ úrovně pro export<\/SPAN>
<SPAN class="punctuation token">}<\/SPAN><SPAN class="punctuation token">;<\/SPAN>
<SPAN class="comment token">\/\/ Vytvoření exportního jobu<\/SPAN>
<SPAN class="keyword token">var<\/SPAN> job <SPAN class="operator token">=<\/SPAN> exportTask<SPAN class="punctuation token">.<\/span><span class="token function">ExportVectorTiles</span><span class="punctuation token">(</span>parameters<span class="punctuation token">,</span> Path<span class="punctuation token">.</span><span class="token function">Combine</span><span class="punctuation token">(</span>_vectorTileCachePath<span class="punctuation token">,</span> <span class="string token">"name.vtpk"</span><span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
<span class="comment token">// Přihlášení k notifikacím o aktualizacích stavu</span>
job<span class="punctuation token">.</span>JobChanged <span class="operator token">+=</span> <span class="punctuation token">(</span>sender<span class="punctuation token">,</span> e<span class="punctuation token">)</span> =>
<span class="punctuation token">{
if (job.Status == Esri.ArcGISRuntime.Tasks.JobStatus.Succeeded)
{
// udělat něco
}
else if (job.Status == Esri.ArcGISRuntime.Tasks.JobStatus.Failed)
{
// Upozornit uživatele
ShowStatusMessage(job.Error.Message);
}
};
// Spustit exportní job
job.Start();<span class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span>;
Lze také exportovat vtpk a styl (pokud je k dispozici) najednou. K tomu je třeba ExportVectorTilesJob předat navíc cestu k adresáři pro styl.
ExportVectorTilesJob job;
if (exportTask.HasStyleResources)
{
job = exportTask.ExportVectorTiles(parameters, Path.Combine(_vectorTileCachePath, "name.vtpk"), _styleResourcePath);
}
else
{
job = exportTask.ExportVectorTiles(parameters, Path.Combine(_vectorTileCachePath, "name.vtpk"));
}
<spanclass=\"line-numbers-rows\"><spanspan
<span
<span
<span
<span
<span
<span
<span
<span
A pokud má být exportován pouze Style, vypadá to takto:<\/P>
<SPAN class="keyword token">var</SPAN> exportTask <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">await</SPAN> ExportVectorTilesTask.<SPAN class="token function">CreateAsync</SPAN><SPAN class="punctuation token">(</SPAN>portalItem<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="punctuation token">(</SPAN>exportTask.<SPAN class="punctuation token">HasStyleResources</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="punctuation token">{</SPAN>
<SPAN class="keyword token">var</SPAN> exportStyleJob <SPAN class="operator token">=</SPAN> exportTask.<SPAN class="token function">ExportStyleResourceCache</SPAN><SPAN class="punctuation token">(</SPAN>_styleResourcePath<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> result <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">await</SPAN> exportStyleJob.<SPAN class="token function">GetResultAsync</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="comment token">//do something</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Pokud například všechny výše popsané exportovatelné ArcGIS Online Vector Tile Services mají být lokálně dostupné jako Basemaps, musí být z jednoho Service exportován vtpk a ze všech Services pouze Styles. V složce StyleResource se nacházejí pouze JSON soubory s popisem stylu, ty jsou velmi malé.

Využití lokálních Vector Tile balíčků a Styles v ArcGIS Runtime
Lokální vtpk a existující Style lze pak do Mapy vložit takto:
//Načíst styl
Pokud vývojář vše popsané pěkně zkombinuje, může tak v aplikaci ArcGIS Runtime App být lokálně použito více Basemaps založených pouze na jednom vtpk. Obvykle už není třeba se obávat o místo na zařízení. V testu pro oblast přibližně Bavorska ve všech detailech je velikost vtpks + Styles jen cca 230 MB a export trval necelých 7 minut. Důležitá je také informace, že existuje maximální omezení ("maxExportTilesCount":10000) pro jeden export.

20 20 20
Nepřipojený Offline Vector Tile Basemap bez extra Style (načteno pouze .vtpk)<\/em>
<\/p >
Offline Vector Tile Basemap s Style<\/em>\u0000
\u0000
\u0000
<\/p >\u0000
Offline Vector Tile Basemap s <\/span>Style<\/em>\u0000
\u0000
\u0000
<\/p >\u0000
Offline Vector Tile Basemap s <\/span>Style<\/em>\u0000
\u0000
\u0000
<\/p >\u0000
Offline Vector Tile Basemap s <\/span>Style<\/em>