Daugiau

Apriboti mastelio keitimo lygius pagal „Bing Map“ pasiekiamumą?


Mano svetainė sukurta naudojant „ArcGIS Server 10“ su 2.3 „JavaScript“ API ir fone naudojama „Bing Maps“. Nors svetainė skirta NSW, Australijoje, mes leidžiame vartotojui keisti mastelį bet kurioje pasaulio vietoje, bet kurioje palaikomoje skalėje (ty plytelių klojimo schemoje, kaip nurodyta „ArcGIS“ pagalbos faile).

„Bing Maps“ kelių/palydovų duomenų rinkiniai yra prieinami skirtingo masto diapazonuose, o apgyvendintos vietovės palaiko didesnį mastą nei tuščios kaimo vietovės. Kai priartinama vieta, kurioje nėra žemėlapio/palydovo duomenų, rodoma „sugedusios kameros“ piktograma. Norime, kad nebūtų rodoma ši negraži piktograma.

Kaip galime apriboti didžiausią mastelio keitimo mastą ten, kur žemėlapis/palydovas nepasiekiamas, bet leisti visiškai priartinti, kur jis pasiekiamas?

„Google“ žemėlapiai tai daro gana gerai - judėdami po pasaulį galite matyti mastelio keitimo slankiklio išplėtimą/sutraukimą, priklausomai nuo to, kokie duomenų rinkiniai yra toje vietoje. Manoma, kad jie turi metaduomenis, rodančius duomenų buvimą/nebuvimą, todėl mes siekiame to imituoti naudodami „Bing“ žemėlapius, neturėdami prieigos prie metaduomenų.


„Bing“ žemėlapiai yra plytelėmis pažymėtas žemėlapis, todėl padidinus ar atitolinus, yra daug detalių. Norėčiau pateikti sąlyginį pareiškimą dėl kiekvieno pakeitimo. Kažkas panašaus: įvykis suaktyvintas: apimties keitimas sąlyginis: jei žemėlapio stilius = antena ir (gauti lygį


Prieš priartindami vietą, galbūt gaukite vaizdo metaduomenis, kad pamatytumėte, kokia yra geriausia skiriamoji geba.

Nustatykite vaizdų prieinamumą nurodyto mastelio lygio vietoje

Kadangi atsakyme yra „zoomMin“ ir „zoomMax“, manau, kad galite skambinti tik vieną kartą esant mažos skiriamosios gebos masteliui ir naudoti iš to gaunamas vertes, kitaip atrodo, kad gali tekti skambinti kelis kartus.


funkcija getMapServerMetadata (Url) {var metadata = ""; esri.request ({url: Url + "? f = json", handleAs: "json", callbackParamName: "callback", load: function (response, io) {metadata + = "Žemėlapio pavadinimas:" + response.mapName; metaduomenys += " n  nDabartinė versija:" +response.currentVersion; metaduomenys += " n  nPaslaugos aprašymas:" +response.serviceDescription; metaduomenys += " n  nAutorių teisės:" +response.copyrightText; metaduomenys += " n  nSluoksnių skaičius:" + response.layers.length; metaduomenys + = " n  nLentelių skaičius:" + response.tables.length; metaduomenys + = " n  nSpatial Reference:" + response.spatialReference .wkid; alert (metaduomenys);}, error: function (error) {alert (error.message);}}); } // Galimi „json“ objektai // currentVersion // serviceDescription // mapName // description // copyrightText // layer // tables // spatialReference // singleFusedMapCache // tileInfo // initialExtent // fullExtent // units // supportImageFormatTypes // documentInfo // galimybės // _ssl

pvz. pabandykite naudoti aukščiau pateiktą kodą su įprastu pagrindinio žemėlapio „MapServer“ URL iš ESRI, pavyzdžiui: http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer

tai taip pat galite naudoti antriniuose sluoksniuose - norėdami sužinoti, kokie metaduomenys yra, tiesiog naudokite pagrindinį URL ir pridėkite? f = json, kad grąžintumėte „json“ atvaizdavimą ir kartotumėte laukų pavadinimus.


Žiūrėti video įrašą: Bing Map Background Map OpenRoads Designer Update 2 (Spalio Mėn 2021).