forked from MapComplete/MapComplete
		
	Refactoring: add 'anchor'-field instead of using the iconSize to determine the anchor
This commit is contained in:
		
							parent
							
								
									f4b7e7eb88
								
							
						
					
					
						commit
						36cdcf0648
					
				
					 3 changed files with 13 additions and 3 deletions
				
			
		|  | @ -198,7 +198,8 @@ export default class CreateNoteImportLayer extends Conversion<LayerConfigJson, L | |||
|                             }, | ||||
|                         ], | ||||
|                     }, | ||||
|                     iconSize: "40,40,center", | ||||
|                     iconSize: "40,40", | ||||
|                     anchor: "center", | ||||
|                 }, | ||||
|             ], | ||||
|         } | ||||
|  |  | |||
|  | @ -62,7 +62,7 @@ export default interface PointRenderingConfigJson { | |||
|      * For example, a feature attached to the ground can use 'bottom' as zooming in will give the appearance of being anchored to a fixed location. | ||||
|      * | ||||
|      */ | ||||
|     anchor?: "center" | "top" | "bottom" | "left" | "right" | string | ||||
|     anchor?: "center" | "top" | "bottom" | "left" | "right" | string | TagRenderingConfigJson | ||||
| 
 | ||||
|     /** | ||||
|      * The rotation of an icon, useful for e.g. directions. | ||||
|  |  | |||
|  | @ -92,6 +92,16 @@ export default class PointRenderingConfig extends WithContextLoader { | |||
|                 throw context + ": builtin SVG asset not found: " + iconPath | ||||
|             } | ||||
|         } | ||||
|         if (typeof json.iconSize === "string") { | ||||
|             const s = json.iconSize | ||||
|             if (["bottom", "top", "center"].some((e) => s.endsWith(e))) { | ||||
|                 throw ( | ||||
|                     "At " + | ||||
|                     context + | ||||
|                     " in : iconSize uses legacy ,bottom, center or top postfix. Use the field `anchor` instead." | ||||
|                 ) | ||||
|             } | ||||
|         } | ||||
|         this.iconSize = this.tr("iconSize", "40,40") | ||||
|         this.anchor = this.tr("anchor", "center") | ||||
|         this.label = this.tr("label", undefined) | ||||
|  | @ -239,7 +249,6 @@ export default class PointRenderingConfig extends WithContextLoader { | |||
| 
 | ||||
|         const anchor = render(this.anchor, "center") | ||||
|         const mode = anchor?.trim()?.toLowerCase() ?? "center" | ||||
| 
 | ||||
|         // in MapLibre, the offset is relative to the _center_ of the object, with left = [-x, 0] and up = [0,-y]
 | ||||
|         let anchorW = 0 | ||||
|         let anchorH = 0 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue