Daha çox

Veb xəritəsindən bir xüsusiyyət qatında ən yaxın təsisin tapılması


Xüsusiyyət qatının göstərildiyi bir veb xəritə yaratdım və istifadəçi xəritəni vurduqda ən yaxın yeri tapmaq üçün çalışıram.

Javascript API istinadında ən yaxın obyektləri tapın, tərəfindən verilən məlumatları istifadə etdimmap.getLayer (). qrafikqurğularımı işə salmaq üçün (http://jsfiddle.net/nikoshr/ob5rxsd7/ bir demo üçün, http://bit.ly/14VEwL3 xəritə üçün):

arcgisUtils.createMap ("9a33727d54904de7b80687fb0810119a", 'map'). sonra (funksiya (cavab) {var map = response.map; var lay = map.getLayer (map.graphicsLayerIds [map.graphicsLayerIds [3]); var imkanları = yeni FeatureSet (); İmkanlar.feature = lay.graphics; var params = yeni ClosestFacilityParameters (); params.travelMode = 5; params.facilities = байгууламж; params.returnIncidents = true; params.returnRoutes = true; params.returnDirections = true; params.outSpatialReference = map.spatialReference; map.on ('klik', funksiya (evt) {var inPoint = yeni nöqtə (evt.mapPoint.x, evt.mapPoint.y, map.spatialReference); var yer = yeni Qrafik (inPoint); var insidents = new FeatureSet (); insidents.features = [location]; params.incidents = hadisələr; closestFacilityTask = new ClosestFacilityTask ("https://route.arcgis.com/arcgis/rest/services/World/ClosestFacility/NAServer/ClosestFacility_ "); closestFacilityTask.solve (parametrlər, funksiya (solveResult) {console.log (solveResult);});});});

və buna bənzər bir cavab alıram

{elanClass: "esri.tasks.ClosestFacilitySolveResult", istiqamətlər: [{routeId: 1, routeName: "Yer 1 - Nöqtə 1", xülasə: {…},…}], imkanlar: boş, hadisələr: [{həndəsə: { …}, Atributlar: {…}, elanClass: "esri.Graphic",…}], mesajlar: [{type: 50, təsvir: "Giriş sahəsi [GÖRÜNÜLÜ] şəbəkə analiz sinfi Təsislərində bir sahəyə uyğunlaşdırılmadı. ", elanClass:" esri.tasks.NAMessage "}, {növü: 50, təsviri:" Giriş sahəsi [TYPEID] ... ",…}, {növü: 50, təsviri:" Təsisatlardakı Yer Nöqtəsi 3 yumşaq bir vəziyyətdədir. məhdud şəbəkə elementi. ", elanClass:" esri.tasks.NAMessage "}], pointBarriers: null, polygonBarriers: null, polylineBarriers: null, marşrutlar: [{geometry: {…}, attributes: {…}, elanClass:" esri .Qrafik ",…}]}

Suallara:

  1. Themarşrutlaristiqamətləratributlar düzgün görünür, amma harada obyektin onları qurmaq üçün istifadə edə bilərəm? Hal-hazırda bunu istifadə edirəm, ancaq serverə göndərilənləri kəsməyə əsaslanır

    var route = solveResult.routes [0], fid = route.attributes.FacilityID, Tesis = tesisler.özəlliklər [fid-1];
  2. Kopyalamaq və indiki kimi geri göndərmək əvəzinə ən yaxın obyekt xidmət sənədində göstərildiyi kimi obyektlər üçün xüsusiyyət qatını təmsil edən bir url ötürməyin bir yolu varmı? Kimi bir şey

    var imkanları = yeni FeatureSet (); İmkanlar.url = 'xüsusiyyətləri təsvir edən bir url';

Xəritədəki imkanlar atributlar və simbologiya kimi ehtiyacınız olmayan məlumatlara sahib qrafika ilə təchiz olunmuş bir xüsusiyyət təbəqəsidir. Xüsusiyyət qatıdakı qrafika əsasında yeni qrafika etmək istəyəcəksiniz.

Bu sətri dəyişdirin

imkanları.özəlliklər = lay.graphics;

bununla

// arrayUtils adlı arrayUtils.forEach (lay.graphics, function (g) {Facecities.features.push (new Graphic (g.geometry)))} adlı dojo / _base / array modulunu tələb edin;});


Videoya baxın: تصميم الخرائط التفاعلية (Oktyabr 2021).