Skip to content

Commit 571d5a3

Browse files
authored
feat: 属性变化时更新图形,避免重复绘制 (#18)
1 parent 807c2b6 commit 571d5a3

File tree

3 files changed

+30
-3
lines changed

3 files changed

+30
-3
lines changed

harmony/maps/src/main/ets/AIRMaps/AIRMapCircle.ets

+7-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,13 @@ export struct AIRMapCircle {
4545
this.unregisterDescriptorChangesListener = this.ctx.descriptorRegistry.subscribeToDescriptorChanges(this.tag,
4646
(newDescriptor) => {
4747
this.descriptor = (newDescriptor as AIRMapCircleDescriptor)
48-
this.setInstance();
48+
this.instance?.setCenter(this.descriptor.rawProps.center);
49+
this.instance?.setRadius(this.descriptor.rawProps.radius);
50+
this.instance?.setStrokeWidth(this.descriptor.rawProps.strokeWidth);
51+
this.instance?.setStrokeColor(MapsManager.getInstance().colorCovertHex(this.descriptor.rawProps.strokeColor));
52+
this.instance?.setFillColor(MapsManager.getInstance().colorCovertHex(this.descriptor.rawProps.fillColor));
53+
this.instance?.setZIndex(this.descriptor.rawProps.zIndex);
54+
this.instance?.setPatterns(MapsManager.getInstance().lineDashPatternConvert(this.descriptor.rawProps.lineDashPattern));
4955
}
5056
)
5157

harmony/maps/src/main/ets/AIRMaps/AIRMapPolygon.ets

+10-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,16 @@ export struct AIRMapPolygon {
4343
this.unregisterDescriptorChangesListener = this.ctx.descriptorRegistry.subscribeToDescriptorChanges(this.tag,
4444
(newDescriptor) => {
4545
this.descriptor = (newDescriptor as AIRMapPolygonDescriptor)
46-
this.setInstance();
46+
this.instance?.setPoints(this.descriptor.rawProps.coordinates);
47+
this.instance?.setHoles(this.descriptor.rawProps.holes);
48+
this.instance?.setStrokeWidth(this.descriptor.rawProps.strokeWidth);
49+
this.instance?.setStrokeColor(MapsManager.getInstance().colorCovertHex(this.descriptor.rawProps.strokeColor));
50+
this.instance?.setFillColor(MapsManager.getInstance().colorCovertHex(this.descriptor.rawProps.fillColor));
51+
this.instance?.setJointType(MapsManager.getInstance().lineJoinTypeConvert(this.descriptor.rawProps.lineJoin));
52+
this.instance?.setGeodesic(this.descriptor.rawProps.geodesic);
53+
this.instance?.setPatterns(MapsManager.getInstance().lineDashPatternConvert(this.descriptor.rawProps.lineDashPattern));
54+
this.instance?.setClickable(this.descriptor.rawProps.tappable);
55+
this.instance?.setZIndex(this.descriptor.rawProps.zIndex);
4756
}
4857
)
4958

harmony/maps/src/main/ets/AIRMaps/AIRMapPolyline.ets

+13-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,19 @@ export struct AIRMapPolyline {
4343
this.unregisterDescriptorChangesListener = this.ctx.descriptorRegistry.subscribeToDescriptorChanges(this.tag,
4444
(newDescriptor) => {
4545
this.descriptor = (newDescriptor as AIRMapPolylineDescriptor)
46-
this.setInstance();
46+
this.instance?.setPoints(this.descriptor.rawProps.coordinates);
47+
this.instance?.setWidth(this.descriptor.rawProps.strokeWidth);
48+
this.instance?.setColor(MapsManager.getInstance().colorCovertHex(this.descriptor.rawProps.strokeColor));
49+
this.instance?.setColors(this.descriptor.rawProps.strokeColors.map((r) => {
50+
return MapsManager.getInstance().colorCovertHex(r) as number;
51+
}));
52+
this.instance?.setStartCap(MapsManager.getInstance().lineCapTypeConvert(this.descriptor.rawProps.lineCap));
53+
this.instance?.setEndCap(MapsManager.getInstance().lineCapTypeConvert(this.descriptor.rawProps.lineCap));
54+
this.instance?.setJointType(MapsManager.getInstance().lineJoinTypeConvert(this.descriptor.rawProps.lineJoin));
55+
this.instance?.setGeodesic(this.descriptor.rawProps.geodesic);
56+
this.instance?.setPatterns(MapsManager.getInstance().lineDashPatternConvert(this.descriptor.rawProps.lineDashPattern));
57+
this.instance?.setClickable(this.descriptor.rawProps.tappable);
58+
this.instance?.setZIndex(this.descriptor.rawProps.zIndex);
4759
}
4860
)
4961

0 commit comments

Comments
 (0)