WinRT, bing-térképek

Az a tény, hogy az alkalmazás kell helymeghatározási adatokat, kifejezetten meg kell adnia a szakasz képességek Package.appxmanifest fájlt. Ezt követően, a Windows 8 figyelmezteti a felhasználót, megerősítést, amikor először kezdi a programot.

Általános szabály, hogy Geolocator adatokat együtt használják a kártyákat. A Windows 8 nincs beépített kontrollokat a Bing Maps, de lehet letölteni olyan eszköz, amely lehetővé teszi hozzá az elemet a kérelmet. Ehhez szüksége lesz egy regisztrációs kulcsot, amely megtalálható az oldalon www.bingmapsportal.com.

De a következő programot fogok menni egy másik utat. A képernyőn megjelenik egy térképet forgatni a tájolás a tablettát. Forgatás lehetővé teszi hogy a térképeket a tényleges északi északi (vagy az irányba, hogy a tabletta észak). Ehelyett ellenőrzések Bing Maps használom SOAP-szolgáltatás Bing térképek letöltheti az egyes csempék és egyesíti őket a térképen. Ebben az esetben, akkor is kell egy regisztrációs kulcsot.

Az alábbiakban a XAML fájlt. Az összes csempe, hogy létrehozzák a kártya kerül a vászon panel nevű imageCanvas. Megjegyzés: a konverzió RotateTransform Vászon forgás középpontjához viszonyítva:

A szolgáltatás támogatja a két típusú lekérdezések: GetMapUriAsync és GetImageryMetadataAsync. Kérelem az első típus lehetővé teszi, hogy a statikus térkép egy adott helyen. Én azonban úgy döntött, a második típus, amely visszaadja információkat letöltheti az egyes „csempe”, ami aztán megy a teljes térképet.

Minden hívás a webszolgáltatás végzik kizárólag a felvezető Loaded. szerezni metaadatok közúti térképeket és műholdas módok: két hívás kell tenni. Az információ tárolása két példányban a helyi nevű osztályt ViewParams. A legfontosabb része a metaadatok egy URI sablon letöltheti az egyes lapok kártyát. Class ViewParams is mezőket tartalmaz a maximális és minimális szint növelése, de tudom, hogy a szint növelése tartományban változik 1-től 21. Látni fogja, hogy más részein a kód azt is feltételezzük, hogy a felső határ megegyezik a növekedés szintje 21:

Betöltése metaadatok két mód végzi két aszinkron hívások, amelyek nem függnek egymástól, és ezért lehet végrehajtani. Ez a helyzet ideális a módszer alkalmazásához Task.WaitAll váró befejezése több feladat tárgyakat.

Amikor mind a hivatkozás egy webes szolgáltatás lesz sikeres befejezése után a program fut az osztályok Geolocator és Inclinometer. Class Inclinometer használják csak az eltérés, amellyel a kártya, és kapcsolja be a nyíl jelzi az északi:

Loaded befejeződése után felvezető programban szereplő két URI sablon, amelyet fel lehet használni betölteni az egyes kártyák csempe. A lapok alkotják a Bing térképek tér bitmap egy oldala 256 pixel. Minden egyes cserép társul egy adott földrajzi szélesség és hosszúság, és növeli a szintet, és tartalmaz egy része a világ térképe közös Mercator vetület.

A szint növelése 1 egész föld (vagy inkább része a földfelszín közötti régióban 85,05 ° északi és déli szélesség) borítja négy cserép.

A számok a csempe, akkor vissza. Minden egyes cserép egy négyzet egy oldala 256 pixel, így a számlák mintegy 49 mérföldre minden pixel:

WinRT, bing-térképek

Szinten növekedés 2 egész föld borítja csempe 16:

WinRT, bing-térképek

Ezek a lapok is négyzetek egy oldalon 256 pixel, úgy, hogy az egyenlítő, minden pixel felel meg körülbelül 24 mérföldre.

Minden egyes cserép növekvő szintű 1 kiterjed az azonos területen, mint a négy cserép növekvő szintű 2. Az bomlás szerint járunk ugyanezen elv növekvő szintű 3 térkép áll a 64 lemezek, a növekvő mértékű 4-256 csempe és így tovább, egészen a szinten 21, amelyben (legalábbis elméletileg) a föld alá tartozó több, mint 4 bar billió - 2 milliona hanem vízszintesen és 2 ppm függőlegesen, felbontása legfeljebb 3 hüvelyk pixelenként az egyenlítő.

Meglehetősen intézkedik tárolása ilyen nagy számú csempe? Meg kell jegyezni, hogy a cserép által azonosított három paraméter - szélesség, hosszúság, és szintjének növelése és a maximális hatékonyság érdekében a rendelkezésre adat csempe egy webes szolgáltatás, csempeburkolat egy területen, meg kell szervereken tárolt közel egymáshoz.

Szükség van kidolgozott számozási rendszert. Minden egyes cserép egy egyedi kvadroklyuch (szereplő négyágú kulcs). URI nyert minták internetes szolgáltatás Bing térképek tartalmaznak „” amely tele van egy hivatkozás a tényleges csempe. A következő két rendszer kvadroklyuchi betoncserép jelzi a bal felső sarokban. Vezető nullák fontosak! A számjegyek száma kvadroklyuchey ugyanolyan szintű növekedése, azaz csempe szintjének emelkedése 21 azonosított kvadroklyuchami álló 21 számjegyet.

Kvadroklyuch az csak számok 0,1,2 és 3, azaz kvadroklyuchi ténylegesen számokat jelölik írva radix 4. A bináris rendszerben számokat 0,1,2, és a 3. képviseletében a 00,01,10 és 11. az első bit határozza meg a függőleges, és a második - a vízszintes koordináta. Így a bitek megfelelnek a „kötésre” hosszúsági és szélességi.

Ahogy már láttuk, az egyes lapok a nagyítási szinten 1 megfelel négy cserép szintjének növelése 2; Ezek a lapok látható a kapcsolatok keretében „szülő / gyermek”. Kvadroklyuch leszármazottja mindig kezdődik azonos jegyekkel kvadroklyuch szülő, de ez egy újabb számot helyétől függően képest leszármazottja a szülő. Kvadroklyuch szülő lehet határozni egyszerű nyírás kvadroklyuchu leszármazottja az utolsó számjegyet.

Ahhoz, hogy az online szolgáltatás használata Bing Maps, akkor ki kell számítani a kvadroklyuch szélességi és hosszúsági. Az alábbi kódot GetLongitudeAndLatitude módszer szerint az első lépés - az átalakítás a szélességi és hosszúsági a relatív kettős Geolocator típusú értékek 0-tól 1, majd a egész értékeket:

Jelentése BITRES, egyenlő 29, áll 21 bitek a szint növelése kvadroklyuche 21 és 8 bit lapka mérete; így ezek egész értékek határozzák meg a szélességi és hosszúsági a legközelebbi pixel csempe a maximális nagyítással. Számítás integerLongitude triviális, de integerLatitude számítva nehezebb, mert Mercator kompressziós történik szélességi távol a egyenlítőtől.

Példa: Center Central Park New Yorkban van egy hosszúsági és szélességi -73,965368 a 40,783271. kettős relatív érték (akár több bit) vannak 0,29454 és 0,37572. 29-bites egész értékeket (adott bináris formában, és szerint csoportosított négy kategóriába a könnyebb olvasás) a következők:

Tegyük fel, hogy szükségünk van a szélességi és hosszúsági a szint növelése 12. Ehhez szét a régebbi 12-bites egész érték hosszúsági és szélességi. (Legyen óvatos! A csoportosulás számjegyek ez a változás.)

Ahhoz, hogy két bináris szám alakult kvadroklyuch, akkor kombinálni kell számmá radix 4. Tedd a kódot bit nem sikerül anélkül, hogy közvetlen felsorolás, de az egyszerűség kedvéért, akkor csak dupla összes bit a szélességi és adjunk hozzá két érték, mintha azt írták, az alján 4:

A kapott kvadroklyuch helyére helyőrző „” a URI sablonok származó internetes szolgáltatást. Így épített URI azonosít egy négyzet bittérkép egy oldala 256 pixel.

Az alábbiakban egy részletet RotatingMap, amely épít kvadroklyuch csonkítva egész értékeket szélességi és hosszúsági. logikát osztották az egyértelműség érdekében, először épült egy hosszú egész szám, akkor egy string:

Kvadroklyuch azonosítja a cserép, amely a kívánt szélesség és hosszúság, hanem egy olyan hely a pontos hosszúsági és szélességi értékek valahol ezt a fájlt. pixel helyen egy cserép lehet azonosítani, mint 8 számjegy szélességi és hosszúsági követően a számok szükséges kvadroklyucha.

A munka véget ér. Mivel az egész oldalt le kell zárni tér csempe egy oldala 256 pixel, és a jelenlegi helyzetben az a képernyő közepén, valahol a központi cserép, a SizeChanged processzor határozza meg, hány csempe szükséges, ezért hány elem van szüksége, hogy megteremtse a parancsot. Név mező sqrtNumTiles azt jelenti: „a négyzetgyöke mozaikok száma.” Képernyő 1366 x 768 pixelt egyenlő lesz az értéke 9. Az összes száma gyűrűk (és elemei Image) egyenlő a négyzet ennek a mennyiségnek, azaz 81:

Ezt a munkát a RefreshDisplay módszer. Végig lépked az elemek és meghatározza fényképek kvadroklyuch (és ennélfogva URI) minden egyes tag:

Továbbra is úgy a kódexéről a gombot az alkalmazás bar. Növelés és csökkentés gombok vannak tiltva, és ismét elérhetővé válnak vonatkozik a minimális és a maximális szintjét a jelenlegi rendszer, bár (mint már említettem) a másik része a program „tudja”, hogy a maximális nagyítási szint 21:

Ismerős területek a térképen után viszont úgy tűnik, szokatlan - mint például a Manhattan szigetén a következő kép:

WinRT, bing-térképek

De ha állva egy ismeretlen helyen, hogy a lemezt, és próbálja kitalálni, hogy hol voltak, térkép forgatás, valamint a mozgások nagyon hasznos lehet. Talán egy napon a címkén, a városok és utcanevek is automatikusan elfordul.