Daha çox

Dojo Promise / Bütün Array ArcGIS Javascript-də Məlumat Şablonunu doldurmur


Dojo / word / all istifadə edərək, bir skriptdə daha sonra işləyən bir queryTask nəticəsi ilə bir infoTemplate doldurmağa çalışıram.

Tətbiqimiz bir coğrafi kodlu ünvan axtarışından bir XY dəyərini qaytarır və bir sıra çoxbucaqlı xüsusiyyətlərə düşüb-düşmədiyini öyrənmək üçün sorğu verir. Edərsə, üç sorğunun hər biri üçün bir sətir keçməlidir.

Sorğu işləyir və konsol səhv daxil etmir. Ancaq infoTemplate boşdur
:

İnfoTemplate-i qurmadan əvvəl sıra nəticələrini nəzərdən keçirməyə çalışdım, amma bunun lazım olduğunu bilmirəm. Ayrıca, bir simli istifadə edərək InfoTemplate başlığını əl ilə təyin edə bilməyəcəyimi gördüm.

Qrafik / zəng massivi əlavə etmək üçün kod:

funksiya addPlaceGraphic (maddə, simvol) {map.graphics.clear (); var place = {}; var atributları, infoTemplate, pt, qrafik; pt = item.feature.geometry; yer.adres = item.name; yer.score = item.feature.attributes.score; var trashQuery = runPWQuery (pt, trashLayer, "zibil"); var yardQuery = runPWQuery (pt, yardWasteLayer, "yardwaste"); var recycleQuery = runPWQuery (pt, recyclingLayer, "recycling"); hamısı ([trashQuery, yardQuery, recycleQuery]). sonra (funksiya (nəticələr) {// sorğu cavabları almaq, atributları yeniləmək və qrafika atributları əlavə etmək = {trashQuery: pt.trashLayer, recycleQuery: pt.recyclingLayer, yardQuery: pt.yardWasteLayer} ; infoTemplate = yeni InfoTemplate (); infoTemplate.setTitle ("Planlaşdırma Məlumatı"); infoTemplate.setContent ("Zibil qutusu: $ {trashQuery}
Təkrar emal: $ {recycleQuery}
Qarışıq Toplu: $ {yardQuery} "); qrafik = yeni Qrafik (pt, simvol, atributlar, infoTemplate); // xəritəyə əlavə et.g.grafika.add (qrafik); map.centerAt (pt);});}

Daha sonra queryTask üçün skriptdə kod / return return:

runPWQuery funksiyası (in_geometry, in_fl, in_container_id) {var query = new esri.tasks.Query (); query.returnGeometry = doğru; query.outFields = ["*"]; query.geometry = in_geometry; var word = in_fl.queryFeatures (sorğu, funksiya (myresponse, io) {var temp_val; var dəyərlər = []; var tstr; for (var il = 0; il  = 1) {$ ("#" + in_container_id) .html (temp_val);} başqa {$ ("#" + in_container_id) .html ("");} qayıt temp_val;}, function (error) {console.log (dojo.toJson (error, true));}); // qayıtmaq vəd qaytarma söz; } renderPWQuery funksiyası () {}

Bunu etmək üçün birdən çox yol var, amma geri qaytarılan nəticələri təhlil etmək üçün belə bir şey gözləyərdim:

hamısı ([trashQuery, yardQuery, recycleQuery]). sonra (funksiya (nəticələr) {// sorğu cavabları alır, atributları yeniləyir və qrafika əlavə edir trashResults = results [0]; yardResults = results [1]; recycleResults = results [2]; attributes = {"trashQuery": trashResults.attributes.WhateverAttribute, "recycleQuery": recycleResults.attributes.WhateverAttribute, "yardQuery": yardResults.attributes.WhateverAttribute}; infoTemplate = yeni InfoTemplate ("Scheduling") }
Təkrar emal: $ {recycleQuery}
Qarışıq Toplu: $ {yardQuery} "); qrafik = yeni Qrafik (pt, simvol, atributlar, infoTemplate);

Yəqin ki, bütün atribut dəyərlərini təyin etməzdən əvvəl nəticələrdən birinin boş olub olmadığını yoxlamalısınızatributlarhər hansı bir səhv qarşısını almaq üçün.


Videoya baxın: Array Methods and Promises (Oktyabr 2021).