Vairāk

Polilīnijas ģeometrija līdz grafikai - SimpleLineSymbol ir vienīgais veids, kas netiek parādīts kartē

Polilīnijas ģeometrija līdz grafikai - SimpleLineSymbol ir vienīgais veids, kas netiek parādīts kartē


Esmu mainījis logrīku Mērījumi, lai saglabātu lietotāja veikto mērījumu vēsturi, kas balstīta uz sesijām. Kad lietotājs noklikšķina uz vēstures vienuma, tam ar šo vēstures vienumu saistītā ģeometrija jāparāda kā GraphicsLayer kartē. Es izmantoju nokautu, lai pārvaldītu vēstures vienumus un izgūtu mērījumu metadatus, noklikšķinot uz vēstures vienuma.

Šobrīd gan mani daudzstūri (apgabalam), gan punkti (atrašanās vietai) darbojas lieliski ar attiecīgi SimpleFillSymbol () un SimpleMarkerSymbol (). Tomēr polilīnijas ģeometrija, kas atgriezta no attāluma mērīšanas, netiek parādīta kartē ar SimpleLineSymbol ().

Šeit ir kods:

var graphicLayerId = "mērījumsHistoryGraphicsLayer"; funkcija addGraphicsLayerToMap (graphicsLayer) {var lay = getGraphicsLayerFromMap (); ja (gulēja! == nedefinēts) {lay.clear (); lay.add (graphicsLayer); map.removeLayer (lay); } map.addLayer (graphicsLayer); } function createGraphicFromGeometry (viewModel) {// Noteikt simbola tipu var simbols; slēdzis (viewModel.activeTool) {case "area": ​​simbols = jauns esri.symbol.SimpleFillSymbol (esri.symbol.SimpleFillSymbol.STYLE_SOLID, jauns esri.symbol.SimpleLineSymbol (esri.symbol.SimpleLineSymbol.STYLE_SYBOLY_SYOL_SYBOL_SYOL_STYLE_SYBOL_STYLE_SYMLT_SYBOL_SYOL_SOL). 255, 0, 0]), 2), jauns esri.Krāsa ([255, 0, 0, 0,25])); pārtraukums; gadījums "attālums": simbols = jauns esri.symbol.SimpleLineSymbol (esri.symbol.SimpleLineSymbol.STYLE_SOLID, new esri.Color ([255, 0, 0]), 3); pārtraukums; gadījums "atrašanās vieta": simbols = jauns esri.symbol.SimpleMarkerSymbol (esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE, 10, new esri.symbol.SimpleLineSymbol (esri.symbol.SimpleLineSymbol.STYLE_SOLID, jauns esri ]), 3), jauns esri.Krāsa ([0, 255, 0, 0,25])); pārtraukums; } var graphic = new esri.Graphic (viewModel.geometry, simbols, {"apjoms": viewModel.extent, "unitName": viewModel.unitName}); atgriešanās grafika; } funkcija createGraphicsLayerFromGraphic (grafisks) {var graphicLayer = new esri.layers.GraphicsLayer ({id: graphicLayerId}); graphicLayer.add (grafisks); graphicLayer.setRenderer (jauns esri.renderer.SimpleRenderer (graphic.symbol)); return graphicLayer; } funkcija getGraphicsLayerFromMap () {atgriezties map.getLayer (graphicLayerId); } $ (dokuments) .on ('noklikšķiniet', '#emv_measurement_history .list-group-item', funkcija () {$ ('#emv_measurement_history .list-group-item.list-group-item-info'). removeClass ('list-group-item-info'); $ (this) .addClass ('list-group-item-info'); var assessmentData = ko.mapping.toJS (ko.dataFor ($ (this) [0] ));; var graphic = createGraphicFromGeometry (mērījumu dati); var graphicsLayer = createGraphicsLayerFromGraphic (grafisks); addGraphicsLayerToMap (graphicsLayer); map.setExtent (mērījumu dati.extent);});

Kā jau teicu, tas darbojas labi gan apgabalā, gan atrašanās vietā, taču šķiet, ka attālums nedarbojas. Esmu pat mēģinājis pievienot grūti kodētu polilīnijas vērtību, un no tā tiek izveidots SimpleLineSymbol bez panākumiem.

Lai iegūtu papildinformāciju, šeit ir informācija par Polyline:

[ [ [ 2591769.2297164765, 5236836.417134136 ], [ 2573584.2281166334, 4620357.96034264 ], [ 2557384.1428811993, 4038303.8136230526 ], [ 3124973.8484519687, 4260007.60486125 ], [ 3714518.451309448, 4454862.77067183 ], [ 4324318.833989203, 4618552.510359674 ], [ 4666465.839330839, 4693607.843734423 ], [ 5013294.285789721, 4757423.375729576 ] ] ]

Un telpiskā atsauce ir iestatīta uz 102100.


Beidzot es to sapratu.

Manā sākotnējā mērījuma ģeometrija ir saglabāta nokautējā mainīgajā. Kad es no tā lasīju, tas lieliski izveidos grafiku, simbolu un grafisko slāni bez kļūdām.

Es atklāju, ka kāda iemesla dēļ dati un telpiskā atsauce neatbilst, tāpēc es izgāju ceļu no saglabātās ģeometrijas, piešķīru to jaunam polilīnijas mainīgajam, no jauna iestatīju telpisko atsauci uz 102100, kā man bija nepieciešams, un piešķīru to no jauna grafikas ģeometrija, kas darbojās.

var g = jauns esri.Graphic (viewModel.geometry, simbols, {"apjoms": viewModel.extent, "unitName": viewModel.unitName}); if (viewModel.activeTool === "distance") {var polyline = new esri.geometry.Polyline (viewModel.geometry.paths); polyline.setSpatialReference (jauns esri.SpatialReference (102100)); g.setGeometry (polilīnija); }

Skatīties video: How to enlarge a site plan in cad. AutoCAD sinhala. revit sinhala. site plan cad revit autocad