@@ -1470,9 +1470,8 @@ export class WebMap extends ol.Observable {
1470
1470
}
1471
1471
let feature = new ol . Feature ( {
1472
1472
geometry : olGeom ,
1473
- Properties : attributes
1473
+ attributes : attributes
1474
1474
} ) ;
1475
- feature . attributes = attributes ;
1476
1475
features . push ( feature ) ;
1477
1476
}
1478
1477
}
@@ -1490,6 +1489,9 @@ export class WebMap extends ol.Observable {
1490
1489
let allFeatures = geojson . features ,
1491
1490
features = [ ] ;
1492
1491
for ( let i = 0 , len = allFeatures . length ; i < len ; i ++ ) {
1492
+ //转换前删除properties,这样转换后属性不会重复存储
1493
+ let featureAttr = allFeatures [ i ] . properties || { } ;
1494
+ delete allFeatures [ i ] . properties ;
1493
1495
let feature = transformTools . readFeature ( allFeatures [ i ] , {
1494
1496
dataProjection : layerInfo . projection || 'EPSG:4326' ,
1495
1497
featureProjection : this . baseProjection || 'ESPG:4326'
@@ -1503,15 +1505,14 @@ export class WebMap extends ol.Observable {
1503
1505
allFeatures [ i ] . properties . lat = coordinate [ 1 ] ;
1504
1506
}
1505
1507
}
1506
- feature . attributes = allFeatures [ i ] . properties || { } ;
1507
1508
1508
1509
// 标注图层特殊处理
1509
1510
let isMarker = false ;
1510
1511
let attributes ;
1511
1512
let useStyle ;
1512
1513
if ( allFeatures [ i ] . dv_v5_markerInfo ) {
1513
1514
//因为优化代码之前,属性字段都存储在propertise上,markerInfo没有
1514
- attributes = Object . assign ( { } , allFeatures [ i ] . dv_v5_markerInfo , feature . attributes ) ;
1515
+ attributes = Object . assign ( { } , allFeatures [ i ] . dv_v5_markerInfo , featureAttr ) ;
1515
1516
if ( attributes . lon ) {
1516
1517
//标注图层不需要
1517
1518
delete attributes . lon ;
@@ -1531,13 +1532,10 @@ export class WebMap extends ol.Observable {
1531
1532
} ) ;
1532
1533
//feature上添加图层的id,为了对应图层
1533
1534
feature . layerId = layerInfo . timeId ;
1534
- //删除不需要的属性,因为这两个属性存储在properties上
1535
- delete feature . attributes . attributes ;
1536
- delete feature . attributes . useStyle ;
1537
1535
} else if ( layerInfo . featureStyles ) {
1538
1536
//V4 版本标注图层处理
1539
1537
let style = JSON . parse ( layerInfo . featureStyles [ i ] . style ) ;
1540
- let attr = feature . attributes ;
1538
+ let attr = featureAttr ;
1541
1539
let imgUrl ;
1542
1540
if ( attr . _smiportal_imgLinkUrl . indexOf ( 'http://' ) > - 1 || attr . _smiportal_imgLinkUrl . indexOf ( 'https://' ) > - 1 ) {
1543
1541
imgUrl = attr . _smiportal_imgLinkUrl ;
@@ -1566,7 +1564,7 @@ export class WebMap extends ol.Observable {
1566
1564
delete attr . _smiportal_title ;
1567
1565
delete attr . _smiportal_otherLinkUrl ;
1568
1566
} else {
1569
- properties = feature . attributes ;
1567
+ properties = { attributes : featureAttr } ;
1570
1568
}
1571
1569
1572
1570
feature . setProperties ( properties ) ;
@@ -1586,19 +1584,20 @@ export class WebMap extends ol.Observable {
1586
1584
let allFeatures = metaData . allDatas . features ,
1587
1585
features = [ ] ;
1588
1586
for ( let i = 0 , len = allFeatures . length ; i < len ; i ++ ) {
1587
+ let properties = allFeatures [ i ] . properties ;
1588
+ delete allFeatures [ i ] . properties ;
1589
1589
let feature = transformTools . readFeature ( allFeatures [ i ] , {
1590
1590
dataProjection : metaData . fileCode || 'EPSG:4326' ,
1591
1591
featureProjection : metaData . featureProjection || Util . getBaseLayerProj ( ) || 'EPSG:4326'
1592
1592
} ) ;
1593
1593
//geojson格式的feature属性没有坐标系字段,为了统一,再次加上
1594
1594
let coordinate = feature . getGeometry ( ) . getCoordinates ( ) ;
1595
1595
if ( allFeatures [ i ] . geometry . type === 'Point' ) {
1596
- allFeatures [ i ] . properties . lon = coordinate [ 0 ] ;
1597
- allFeatures [ i ] . properties . lat = coordinate [ 1 ] ;
1596
+ properties . lon = coordinate [ 0 ] ;
1597
+ properties . lat = coordinate [ 1 ] ;
1598
1598
}
1599
- feature . attributes = allFeatures [ i ] . properties || { } ;
1600
1599
feature . setProperties ( {
1601
- Properties : feature . attributes
1600
+ attributes : properties
1602
1601
} ) ;
1603
1602
features . push ( feature ) ;
1604
1603
}
@@ -1786,7 +1785,7 @@ export class WebMap extends ol.Observable {
1786
1785
let filterResult = false ;
1787
1786
try {
1788
1787
filterResult = window . jsonsql . query ( sql , {
1789
- attributes : feature . attributes
1788
+ attributes : feature . get ( ' attributes' )
1790
1789
} ) ;
1791
1790
} catch ( err ) {
1792
1791
//必须把要过滤得内容封装成一个对象,主要是处理jsonsql(line : 62)中由于with语句遍历对象造成的问题
@@ -1848,8 +1847,9 @@ export class WebMap extends ol.Observable {
1848
1847
let graphics = [ ] ;
1849
1848
//构建graphic
1850
1849
for ( let i in features ) {
1851
- let graphic = new ol . Graphic ( features [ i ] . getGeometry ( ) , features [ i ] . attributes ) ;
1850
+ let graphic = new ol . Graphic ( features [ i ] . getGeometry ( ) ) ;
1852
1851
graphic . setStyle ( shape ) ;
1852
+ graphic . setProperties ( { attributes : features [ i ] . get ( 'attributes' ) } )
1853
1853
graphics . push ( graphic ) ;
1854
1854
}
1855
1855
return graphics ;
@@ -1896,7 +1896,7 @@ export class WebMap extends ol.Observable {
1896
1896
} ) ;
1897
1897
layer . setStyle ( features => {
1898
1898
let labelField = labelStyle . labelField ;
1899
- let label = features . attributes [ labelField . trim ( ) ] + "" ;
1899
+ let label = features . get ( ' attributes' ) [ labelField . trim ( ) ] + "" ;
1900
1900
if ( label === "undefined" ) {
1901
1901
return null ;
1902
1902
}
@@ -2013,7 +2013,7 @@ export class WebMap extends ol.Observable {
2013
2013
this . getMaxValue ( features , weightFeild ) ;
2014
2014
let maxValue = this . fieldMaxValue [ weightFeild ] ;
2015
2015
features . forEach ( function ( feature ) {
2016
- let attributes = feature . get ( "Properties" ) || feature . attributes ;
2016
+ let attributes = feature . get ( ' attributes' ) ;
2017
2017
try {
2018
2018
let value = attributes [ weightFeild ] ;
2019
2019
feature . set ( 'weight' , value / maxValue ) ;
@@ -2038,7 +2038,7 @@ export class WebMap extends ol.Observable {
2038
2038
}
2039
2039
features . forEach ( function ( feature ) {
2040
2040
//收集当前权重字段对应的所有值
2041
- attributes = feature . get ( "Properties" ) || feature . attributes ;
2041
+ attributes = feature . get ( ' attributes' ) ;
2042
2042
try {
2043
2043
values . push ( parseFloat ( attributes [ field ] ) ) ;
2044
2044
} catch ( e ) {
@@ -2067,7 +2067,7 @@ export class WebMap extends ol.Observable {
2067
2067
layer . setStyle ( feature => {
2068
2068
let styleSource = layer . get ( 'styleSource' ) ;
2069
2069
let labelField = styleSource . themeField ;
2070
- let label = feature . attributes [ labelField ] ;
2070
+ let label = feature . get ( ' attributes' ) [ labelField ] ;
2071
2071
return styleSource . styleGroups [ label ] . olStyle ;
2072
2072
} ) ;
2073
2073
@@ -2114,7 +2114,7 @@ export class WebMap extends ol.Observable {
2114
2114
let names = [ ] ,
2115
2115
customSettings = themeSetting . customSettings ;
2116
2116
for ( let i in features ) {
2117
- let attributes = features [ i ] . attributes ;
2117
+ let attributes = features [ i ] . get ( ' attributes' ) ;
2118
2118
let name = attributes [ fieldName ] ;
2119
2119
let isSaved = false ;
2120
2120
for ( let j in names ) {
@@ -2180,7 +2180,7 @@ export class WebMap extends ol.Observable {
2180
2180
let styleSource = layer . get ( 'styleSource' ) ;
2181
2181
if ( styleSource ) {
2182
2182
let labelField = styleSource . themeField ;
2183
- let value = Number ( feature . attributes [ labelField . trim ( ) ] ) ;
2183
+ let value = Number ( feature . get ( ' attributes' ) [ labelField . trim ( ) ] ) ;
2184
2184
let styleGroups = styleSource . styleGroups ;
2185
2185
for ( let i = 0 ; i < styleGroups . length ; i ++ ) {
2186
2186
if ( i === 0 ) {
@@ -2245,7 +2245,7 @@ export class WebMap extends ol.Observable {
2245
2245
let segmentMethod = method ;
2246
2246
let that = this ;
2247
2247
features . forEach ( function ( feature ) {
2248
- attributes = feature . get ( "Properties" ) || feature . attributes ;
2248
+ attributes = feature . get ( "attributes" ) ;
2249
2249
try {
2250
2250
if ( attributes ) {
2251
2251
//过滤掉非数值的数据
@@ -2404,7 +2404,7 @@ export class WebMap extends ol.Observable {
2404
2404
let condition = that . replaceFilterCharacter ( layerInfo . filterCondition ) ;
2405
2405
let sql = "select * from json where (" + condition + ")" ;
2406
2406
let filterResult = window . jsonsql . query ( sql , {
2407
- attributes : feature . attributes
2407
+ attributes : feature . get ( ' attributes' )
2408
2408
} ) ;
2409
2409
if ( filterResult && filterResult . length > 0 ) {
2410
2410
that . addDataflowFeature ( feature , layerInfo . identifyField , {
@@ -2492,7 +2492,7 @@ export class WebMap extends ol.Observable {
2492
2492
//有转向字段
2493
2493
let value , image ;
2494
2494
if ( directionField !== undefined && directionField !== "未设置" && directionField !== "None" ) {
2495
- value = feature . attributes [ directionField ] ;
2495
+ value = feature . get ( ' attributes' ) [ directionField ] ;
2496
2496
} else {
2497
2497
value = 0 ;
2498
2498
}
@@ -2555,7 +2555,7 @@ export class WebMap extends ol.Observable {
2555
2555
let condition = that . replaceFilterCharacter ( layerInfo . filterCondition ) ;
2556
2556
let sql = "select * from json where (" + condition + ")" ;
2557
2557
let filterResult = window . jsonsql . query ( sql , {
2558
- attributes : feature . attributes
2558
+ attributes : feature . get ( ' attributes' )
2559
2559
} ) ;
2560
2560
if ( filterResult && filterResult . length > 0 ) {
2561
2561
that . addDataflowFeature ( feature , layerInfo . identifyField , {
@@ -2598,7 +2598,6 @@ export class WebMap extends ol.Observable {
2598
2598
}*/
2599
2599
featureCache [ geoID ] . setGeometry ( feature . getGeometry ( ) ) ;
2600
2600
featureCache [ geoID ] . setProperties ( feature . getProperties ( ) ) ;
2601
- featureCache [ geoID ] . attributes = feature . attributes ;
2602
2601
source . changed ( ) ;
2603
2602
} else {
2604
2603
source . addFeature ( feature ) ;
@@ -2621,7 +2620,7 @@ export class WebMap extends ol.Observable {
2621
2620
dataProjection : "EPSG:4326" , // todo 坐标系
2622
2621
featureProjection : that . baseProjection || 'EPSG:4326'
2623
2622
} ) ;
2624
- feature . attributes = geojson . properties ;
2623
+ feature . setProperties ( { attributes : geojson . properties } ) ;
2625
2624
callback ( feature ) ;
2626
2625
2627
2626
} ) ;
@@ -2672,7 +2671,7 @@ export class WebMap extends ol.Observable {
2672
2671
* @returns {* }
2673
2672
*/
2674
2673
setFeatureInfo ( feature ) {
2675
- let attributes = feature . getProperties ( ) . attributes ,
2674
+ let attributes = feature . get ( ' attributes' ) ,
2676
2675
defaultAttr = {
2677
2676
dataViz_title : '' ,
2678
2677
dataViz_description : '' ,
@@ -2711,7 +2710,7 @@ export class WebMap extends ol.Observable {
2711
2710
layer . setStyle ( feature => {
2712
2711
let styleSource = layer . get ( 'styleSource' ) ;
2713
2712
let themeField = styleSource . parameters . themeSetting . themeField ;
2714
- let value = Number ( feature . attributes [ themeField ] ) ;
2713
+ let value = Number ( feature . get ( ' attributes' ) [ themeField ] ) ;
2715
2714
let styleGroups = styleSource . styleGroups ;
2716
2715
for ( let i = 0 , len = styleGroups . length ; i < len ; i ++ ) {
2717
2716
if ( value >= styleGroups [ i ] . start && value < styleGroups [ i ] . end ) {
@@ -2758,7 +2757,7 @@ export class WebMap extends ol.Observable {
2758
2757
minR = parameters . themeSetting . minRadius ,
2759
2758
maxR = parameters . themeSetting . maxRadius ;
2760
2759
features . forEach ( feature => {
2761
- let attributes = feature . attributes ,
2760
+ let attributes = feature . get ( ' attributes' ) ,
2762
2761
value = attributes [ themeField ] ;
2763
2762
// 过滤掉空值和非数值
2764
2763
if ( value == null || ! Util . isNumber ( value ) ) {
0 commit comments