Daugiau

Kaip gauti legendą iš „ArcGISDynamicMapServiceLayer“ naudojant „esri javascript api“?


Naujas kodas: Aš šiek tiek atnaujinau kodą į naujausią naujausią „api“ versiją, tačiau „Ashima“ buvo teisinga tuo, kad nepraleidau savo sluoksnio kaip masyvo. Ištaisė tai ir pavyko

žemėlapis = naujas žemėlapis ("map", {bazinis žemėlapis: "gatvės", centras: [-84.32, 46.5], // ilgas, lat. mastelis: 13}); // atneša myMap sluoksnį var myMap = new FeatureLayer (myMapLocation, {mode: FeatureLayer.MODE_ONDEMAND, outFields: ["*"]}); // pridėkite legendą map.on ("layer-add-result", function (evt) {var layerInfo = arrayUtils.map (evt.layers, function (layer, index) {return {layer: layer.layer, title: layer.layer.name};}); if (layerInfo.length> 0) {var legendDijit = nauja legenda ({map: map, layerInfos: layerInfo}, "legenda"); legendDijit.startup ();}}); map.addLayers ([mano žemėlapis]);

Taigi, aš naudoju ESRI „Javascript“ API, kol kas man pavyko sukurti žemėlapį, atnešti sluoksnį iš kito šaltinio ir juos sujungti, bet aš užstrigau paimdamas legendą iš kito šaltinio ir taip pat pridurdamas tai. Tai, ką šiuo metu turiu po bandymų (taip pat bandžiau perjungti žemėlapį: žemėlapį į žemėlapį: „mymap“) „MyMapLocation“ tiesiog nustatytas kaip „/ MapServer“, o ne „/ mapServer / sluoksniai“ ar bet kas kita.

map = new Map ("mapDiv", {bazinis žemėlapis: "gatvės"}); myMap = nauji esri.layers.ArcGISDynamicMapServiceLayer (myMapLocation); map.on ('layer-add-result', function () {// šis skyrius sulaužo v var legend = new Legend ({map: map, layerInfos: legendLayers}, "legendDiv"); // ^ legend.startup ( );}); legendLayers.push ({sluoksnis: mano žemėlapis}); map.addLayers ([mano žemėlapis]);

Panašu, kad jūs nepaskelbėte legendLayers kaip masyvo (var legendSluoksniai = [];) prieš jį naudojant. Jei tai neišsprendžia jūsų problemos, ar galite įklijuoti klaidą, kurią gaunate paleidę šį kodą naršyklėje?


„ArcGIS JavaScript“ API: pasirinkite ypatybes ir pateikite informaciją atributų lentelėje

Turiu interneto žemėlapį, kuriame galiu pasirinkti ypatybes naudodama daugiakampio grafiką (turiu tris požymių sluoksnius, vieną tašką ir du daugiakampio požymių sluoksnius). Kaip galiu pateikti grafiškai pasirinktų funkcijų rezultatus lentelių formatu, panašiu į šį pavyzdį, tačiau užuot naudojus radimo užduotį, rezultatuose turėtų būti pateikiama grafiškai pasirinktų funkcijų atributų informacija.

pateikė JakeSkinner

Štai pavyzdys, kaip tai padaryti.

pateikė JakeSkinner

Štai pavyzdys, kaip tai padaryti.

pateikė JakeSkinner

Atnaujinta „Fiddle“, kad spustelėjus duomenų tinklelį būtų įtrauktas šios funkcijos mastelis:

Ar galite paskelbti & ltHEAD & gt informaciją, pvz., Stiliaus lapo nuorodas, kurias naudojate kodui?

pateikė JakeSkinner

Labas Džeikai. Kuriu „Map Discovery“ įrankį ir praplečiu jūsų kodą. Bandau ieškoti pagal geometriją, tekstą (naudojant radimo užduotį) ir pagal ribas (DD, DMS, MGRS) su buferiu

Pridėjau teksto paiešką, bet ji neveikia. Ar galėtumėte padėti man pridėti šias funkcijas, įskaitant X, Y koordinates (DD) su buferiu. Mano kodas yra žemiau.


Eksportuoti žemėlapių grafiką su „Legend“ įrankių juosta į PDF dokumentą

Labas
Esu sukūręs „Silverlight“ programą, kurioje naudojuosi „BaseMap“ paslauga, o viršuje pridedu grafikos. Noriu eksportuoti šį žemėlapio vaizdą kartu su grafikos ir legendos įrankių juosta į PDF dokumentą. Sėkmingai pavyko eksportuoti žemėlapio vaizdą į PDF dokumentą, kuriame tik „BaseMap“ yra eksportuojamas į PDF dokumentą (kaip kodą, parašytą eksportuoti tik PDF). Dabar noriu eksportuoti grafikos ir „Legend“ įrankių juostą, taip pat ir anksčiau minėtas, bet nesugeba suprasti, kaip tai padaryti. Pridedamas ekrano vaizdas suteikia žemėlapio vaizdą su grafikos ir legendos įrankių juosta.

Naudojant „ArcGIS Server10“, „Silverlight 4“ su „VS2010 SP1“.

Bet kokia pradinė kodo pagalba man bus labai naudinga.

Ar antikūnas gali pateikti man greitą idėją apie tai. Norėdamas eksportuoti tik „BaseMap“ į PDF dokumentą, naudoju šias kodo eilutes. Reikia eksportuoti naudojant žemėlapių grafiką ir legendos įrankių juostą.

private void btnOK_Click (objekto siuntėjas, RoutedEventArgs e)
<
// Rodyti išsaugojimo kaip dialogo langą
Dialogo lange „SaveFileDialog“ = naujas „SaveFileDialog“ ()
dialogas.Filter = "PDF | * .pdf | JPEG failai (* .jpeg) | * .jpeg"

jei (dialogas. ShowDialog () == true)
<
// grįžti
//>

// Sukurkite naują dinaminį sluoksnį iš tos pačios žemėlapių paslaugos kaip ir dabartinis plytelių sluoksnis


Kaip gauti laukų pavadinimus iš sluoksnio?

Taigi turiu „ArcGISDynamicMapServiceLayer“, kurio viduje yra antriniai sluoksniai. kaip gauti lauko pavadinimus to posluoksnio viduje?

autorius DominiqueBroux

Nemanau, kad yra SL API, suteikiantis „ArcGISDynamicMapServiceLayer“ laukus, tačiau informaciją galite gauti paprašę REST taško.


Bet norint tai panaikinti, jums reikės nedidelio kodo.

autorius DominiqueBroux

Jei turite 2 versijos API, galite apsvarstyti galimybę sukurti „FeatureLayer“, kuris suteiks laukų sąrašą po inicializavimo veiksmo.

Pavyzdys: paskelbkite funkcijų sluoksnį tik pasirinkimo režimu, kad nereikalautumėte jokių jums nereikalingų duomenų.

Gaukite laukus tvarkydami įvykį „Inicializuotas“:

Ar įmanoma programiškai gauti „Field_Alias“ iš REST galinio taško, naudojamo su užduotimi identifikuoti?

Laiminga, jei kas nors galėtų tai nušviesti man

Savo techniniame tinklaraštyje sukūriau du įrašus, kurie parodo, kaip tai padaryti. Sukūriau „ArcGISDynamicMapServiceLayer“ klasės pratęsimo metodą. Deja, mano tinklaraštis yra brazilų portugalų kalba, bet jūs, vaikinai, galite lengvai jį išversti naudodami „Google“ (spėju).

Ari C. Raimundo
Programų kūrėjas
Kuritiba-PR-Brazilija

Savo techniniame tinklaraštyje sukūriau du įrašus, kurie parodo, kaip tai padaryti. Sukūriau „ArcGISDynamicMapServiceLayer“ klasės pratęsimo metodą. Deja, mano tinklaraštis yra brazilų portugalų kalba, bet jūs, vaikinai, galite lengvai jį išversti naudodamiesi „Google“ (spėju).

Ari C. Raimundo
Programų kūrėjas
Kuritiba-PR-Brazilija

Labai ačiū už jūsų kodą, jis man labai padėjo. išsaugojau mano dieną, tai suteikia tikslų būdą gauti „DynamicMapServer“ sluoksnio laukus, kurį laiką ieškojau panašaus požiūrio vadovo, o jūs atlikote nuostabų darbą ir, be to, pasidalijote savo darbu - ne tik pateikdami rodykles kaip kiti pranešimai. Tai tikrai šaunu. Labai ačiū jums už visus taškus.
Beje, Kuritiba yra gražus kietas miestas.


1 Atsakymas 1

Kaip sakėte, „Esri“ yra tik vienas iš daugelio „OAuth“ teikėjų, todėl turėsite „sukti savo kodą“ bet kokioje situacijoje, kai atskiri pardavėjo pavyzdžiai tiksliai neparodo, ko jums reikia pasiekti.

Kalbant apie tai, ar jums trūksta kažko pagrindinio, iš jūsų klausimo tikrai negaliu pasakyti. Bet koks autentifikavimas, kurį suaktyvinsite su trečiųjų šalių OAuth teikėjais, neturės nieko bendro su „Esri“ serveriais.

Galiausiai nesuprantu, kodėl galų gale parašytumėte C #, nes galite suteikti galutiniams vartotojams galimybę tiesiogiai prisijungti prie „Google“ ar „Facebook“ tiesiogiai iš kliento „JavaScript“.


Sukurkite įrankių rinkinį

  1. „ArcMap“ lange Katalogas eikite į „WebApp“ aplanką registruotame aplanke.
  2. Dešiniuoju pelės mygtuku spustelėkite aplanką „WebApp“ ir spustelėkite Naujas & gt įrankių rinkinys. Pavadinkite įrankių rinkinį „AdvancedHighQualityPrinting“.
  3. Dešiniuoju pelės mygtuku spustelėkite „AdvancedHighQualityPrinting“ įrankių laukelį ir spustelėkite „Elemento aprašymas“.
  4. Dialogo lange Elemento aprašymas užpildykite žymes ir suvestinės elementus pasirinktu tekstu. Pasirinktinai užpildykite kitus prekių aprašymus.
  5. Spustelėkite Išsaugoti ir uždarykite dialogo langą Elemento aprašymas.

Pradėkite žiniatinklio plėtrą naudodami GIS žemėlapį „JavaScript“

(kursas atnaujintas: 2017 m. spalio mėn. 01: pakeiskite paskaitą 03 Testo projektai „Google Firebase“ 2017 m. gegužės mėn. 03: pridėkite 13 naujų paskaitų funkcijų sluoksniams pridėti, legenda 2017 m. balandžio 27 d.: pridėkite 7 naujas paskaitas žymėms, „dijit“ mygtukus, ir „openStreet Map“ 2017 m. balandžio 23 d .: atnaujinkite naujos API versijos 3.20 ir 4.3 kodą, pridėkite visą kodą kiekvienam projektui 2016 m. - rugpjūčio 31 d.: „Google“ pagrindinės paslaugos teikimas nutrauktas, „Firebase“ rekomenduojama naudoti 2016 m. -Birželis-23: pridėti papildomą turinį 2016-birželis-29: pridėti papildomą turinį)

„Pasaulis, kuriame gyvename, yra pilnas koordinačių ir man tai patinka!“ - Alfredas Lamas, kurso instruktorius.

„Gražiojo žemėlapio kūrimo esmė yra pusiausvyra!“ - Alfredas Lamas, kurso instruktorius.

Tai pradinio lygio kursas, mokantis, kaip pridėti GIS žemėlapį, 3D žemėlapį prie interneto programų „JavaScript“. Šiame kurse pateiktas kodas yra paprastas ir efektyvus. Šio kurso tikslas yra suteikti studentams idėją, kiek „ArcGIS JavaScript“ API gali padaryti jums.

GIS reiškia geografinę informacinę sistemą. Jį sudaro aparatinė įranga, programinė įranga, žmonės, aplinka ir duomenys. Todėl skirtingos kilmės studentai gali mokytis ir naudotis GIS. Šio kurso tikslas yra perduoti studentams idėją, kad GIS žemėlapį pridėti prie interneto jūsų klientams nėra sunku. Galite praleisti savo minimalų laiką, kad galėtumėte tai tvarkyti.

Jei dar nesinaudojote GIS žemėlapių kūrimu žiniatinklyje, šis kursas yra tinkama vieta jums pradėti. „ArcGIS“ API „JavaScript“ sukūrė ESRI, kuri iki šiol yra didžiausia GIS sistemų ir programų pardavėja pasaulyje. Kai kurie kūrėjai gali paklausti, kodėl mes stengiamės naudoti GIS žemėlapius, nes jau turime „Google“ žemėlapį. Atsakau, kad „Google“ žemėlapis yra puikus būdas identifikuoti savo vietas. Tačiau jos duomenų, funkcionalumo ir lankstumo toli gražu nepakanka, jei norite sukurti universalią programą su įvairiomis pagrindinėmis žemėlapiais, papasakoti istoriją, pridėti savo žemėlapio ypatybes ar atlikti analizę savo klientams su žemėlapiu. Kita vertus, „ArcGIS“ yra išsamiausia ir pažangiausia GIS pasaulyje ir ji gali atlikti visas šias užduotis jums. Prašome paminėti, kad 3D žemėlapio API vis dar yra beta versijos.

Laikas yra brangus daugeliui interneto kūrėjų ir programuotojų. Šis kursas buvo sutrumpintas atliekant visus būtinus veiksmus norint pradėti kurti žiniatinklio GIS programą. Tiems GIS vartotojams, studentams, „iOS“ kūrėjams ir visiems, kurie domisi tinkamesnių mobiliųjų ar žiniatinklio GIS programų kūrimu. Ateityje rasite mano svetainėje arba sužinokite apie kitus mano pranešimus apie „Android“, „JavaScript“ ir „iOS“.


Kaip gauti legendą iš „ArcGISDynamicMapServiceLayer“ naudojant „esri javascript api“? - Geografinės informacinės sistemos

Kad pakeitimai įsigaliotų, iškviesdami šį metodą, paskambinkite „GraphicsLayer“ perbraižymo metodu.

Naujas esri.renderer.SimpleRenderer (numatytasis simbolis)

Naujas esri.renderer.SimpleRenderer (json)

& ltSymbol & gt defaultSymbol

& ltString & gt aprašymas

& ltString & gt etiketė

& ltObject & gt proporcingasisimbolis

  • Duomenys, atspindintys a atstumo kiekis. Pavyzdžiui:
    • Jei turite medžių vietas, apibrėžtas kaip taškai, ir atributo lauką su medžio lajos spinduliu, galite naudoti proporcingus simbolius, kad pavaizduotumėte faktinį kiekvieno medžio padengtą žemės plotą.
    • Norėdami vaizduoti vandens magistralės plotį, galite naudoti proporcingo dydžio linijas.
    • Eismo duomenis, pvz., Kelius ir greitkelius, rodyti kaip linijos simbolius, kai smūgio plotis yra proporcingas eismo skaičiui.
    • Sukurkite proporcinių žymenų simbolių surašymo žemėlapį, kuriame kiekvieno simbolio plotas atspindi valstybės populiaciją.

    Be to, nepaisant aukščiau aprašytų duomenų tipo, galite susieti duomenų reikšmių diapazoną su simbolių dydžių diapazonu.

    Taškų funkcijoms gamintojo dydis skiriasi proporcingai duomenų vertei. Linijos ypatybėms brūkšnio plotis skiriasi.

    proportionalSymbolInfo palaiko šias savybes

    Ši savybė yra būtina

    Jei duomenų vertė reiškia ne atstumą (pvz., Srauto skaičius, surašymo duomenys), reikšmė „Unit“ turėtų būti nustatyta kaip „nežinoma“.

    Ši savybė yra būtina.

    • spindulys: duomenų vertė rodo apskrito objekto spindulį.
    • skersmuo: duomenų vertė rodo apskritimo formos skersmenį.
    • plotas: duomenų reikšmė nurodo objekto plotą.
    • plotis: duomenų reikšmė nurodo linijos plotį.
    • atstumas: duomenų reikšmė rodo apskrito objekto spindulį.
    • spindulys: duomenų vertė rodo atstumą nuo vidurio linijos (pusę pločio).

    Ši savybė neprivaloma.

    Duomenys, vaizduojantys atstumas kiekis: nurodykite „minSize“ ir „maxSize“, kad išlygintumėte išskirtinius rodiklius.

    Duomenys, atspindintys ne atstumą. Nurodykite „maxSize“, kad išlygintumėte išskirtinius rodiklius.

    Susieti duomenų reikšmių diapazoną su simbolių dydžių diapazonu:

    & ltObject & gt rotationInfo

    Objekto atributo lauko, kuriame yra pasukimo kampas, pavadinimas. Arba funkcija, kuri grąžina pasukimo kampą.

    Funkcija naudinga tais atvejais, kai pasukimo kampo atributo lauke nėra, tačiau ją reikia apskaičiuoti naudojant matematinę išraišką ar formulę. Pavyzdžiui, galite nurodyti vėjo arba dabartinės krypties apskaičiavimo funkciją, kai pagrindiniai duomenys saugomi kaip U arba V vektoriai. Žiūrėkite pavyzdį žemiau.


    „ArcGIS“ API, skirta „JavaScript“ 3.26

    Prie programos pridėkite geografinį paieškos laukelį su keliomis kodo eilutėmis. Valdiklis pagal numatytuosius nustatymus naudoja „ArcGIS Online World“ geokodavimo paslaugą, tačiau gali būti pritaikytas naudoti vieną ar daugiau „ArcGIS Server“ geokodavimo paslaugų.
    Peržiūrėkite pavyzdžius, kurie naudoja šį naują valdiklį.

    Naujos žemėlapio konstruktoriaus parinktys:

    Žemėlapio klasėje yra naujos konstruktoriaus parinktys, kurios gali padėti nustatyti žemėlapį naudojant mažiau kodo.

    • bazinis žemėlapis: ArcGIS.com pagrindinis žemėlapis. Galimos vertybės: „gatvės“, „palydovas“, „hibridas“, „topo“, „pilka“, „vandenynai“, „nacionalinis-geografinis“ arba „osmas“.
    • centras: dviejų koordinačių (ilgumos, platumos) arba esri.geometry.Point masyvas.
    • priartinimas: pradedamas žemėlapio mastelio lygis.
    • „minZoom“: mažiausias mastelio žemėlapio mastelio lygis.
    • „maxZoom“: didžiausias žemėlapio mastelio mastelis.

    Dabar žemėlapio dydis keičiamas automatiškai, todėl nebereikia nustatyti įvykių klausytojo, norint keisti įvykių dydį žemėlapio talpykloje, kad būtų galima skambinti map.resize, kai žemėlapio konteinerio dydis keičiamas.

    Žemiau pateikiamas ankstesnio nei 3.3 ir lygiaverčio 3.3 kodo palyginimas.

    Paprastas žemėlapio perjungimas

    Du nauji žemėlapių metodai „getBasemap“ ir „setBasemap“ palengvina pagrindinių žemėlapių keitimą. „setBasemap“ priima vieną iš aukščiau paminėtų eilučių, atitinkančią „ArcGIS.com“ pagrindinį žemėlapį. Jei iš pradžių nustatant pagrindinę žemėlapį buvo naudojamas map.options.basemap arba žemėlapio pagrindinė schema buvo nustatyta su setBasemap, „getBasemap“ grąžins eilutę, atitinkančią dabartinį žemėlapio pagrindinį žemėlapį.

    Pagal numatytuosius nustatymus mažo žemėlapio mastelio valdymas

    Žemėlapio mastelio valdikliai dabar pagal numatytuosius nustatymus yra „+“ ir „& ndash“, o ne šliaužiklis. Slankiklį galima perkelti sliderStyle: "didelis" į žemėlapio žemėlapį per konstruktoriaus parinkčių objektą.

    Kaip vienintelį žemėlapio sluoksnį naudokite grafikos sluoksnį arba funkcinį sluoksnį

    Žemėlapiui nebereikalinga išklijuota ar dinamiška paslauga, kuri būtų pirmasis į žemėlapį įdėto sluoksnio tipas. Peržiūrėkite naują funkcijų sluoksnį bet kuriame projekcijos pavyzdyje, kad pamatytumėte tai veikiant.

    Patobulintas platumos ir ilgumos koordinačių valdymas

    Manoma, kad esri.geometry objektai, sukurti be erdvinės nuorodos, yra geografiniai ir pagal numatytuosius nustatymus yra WGS84 erdvinės nuorodos (wkid 4326). „Esri.geometry.Point“ egzemplioriai turi du naujus metodus: „getLatitude“ ir „getLongitude“, kurie grąžina platumą arba ilgumą, jei taškas turi geografines ar žiniatinklio merkatoriaus koordinates. Kitu atveju šie metodai grįžta neapibrėžti. Žemėlapis taip pat turi „geographicExtent“ ypatybę, kai žemėlapis yra geografinėse koordinatėse arba žiniatinklio merkatoriuje.

    Piešimo įrankių patobulinimai

    Piešimo įrankių juostos stačiakampio, trikampio, apskritimo ir elipsės įrankiai palaiko paspaudimą + vilkite, kad apibrėžtumėte kiekvienos formos dydį. Įrankių juostoje taip pat yra parinkčių, kaip piešti rodykles tam tikromis kryptimis (aukštyn, žemyn, kairėn ir dešinėn). Naujos parinktys parodytos piešimo įrankių pavyzdyje.