cardo Einstellungen

Globale Symbole

In cardo gibt es eine Reihe von Aktionen, in welchen eine Geometrie in der Karte dargestellt wird. Dies sind bspw. der Suchtreffer einer Gazetteer Anfrage, die Darstellung eine Koordinate aus dem Transformationstool, etc.

Die Symbolik ist dabei in der Komponente hinterlegt und "passt" für viele Anwendungsfälle. Allerdings besteht ab und an der Wunsch diese doch an die eigenen Vorstellungen anzupassen.

Dazu gibt es seit Version 4.0.11 in den Einstellungen die Möglichkeit globale Symbole zu definieren. Jedes Symbol besteht aus einer clientseitigen Darstellungsregel (OpenLayers) und aus einem Block für Iwan7 GeoCSS.

Später ist angedacht, einen Konverter GeoCSS => OpenLayers zu realisieren, so dass die Definition nicht doppelt erfolgen muss. Z.Z. wird das GeoCSS nicht ausgewertet.

Die globalen Symbole verfügen über einen eindeutigen Bezeichner, den Anwendungen nutzen können.

Der Bezeichner ist case-sensitiv (Beachtung der Groß-/Kleinschreibung).

Liste der derzeit verfügbaren Typen

Modul Typname
GPS-Koordinate in der Karte IduIT.cardo.Map.GPSLocation

Standard für GPS-Koordinate in cardo4:

function(res)
{
    var accu = this.get("accuracy");

    //res = 1 pixel in map
    var radius = Math.max((accu / res) / 2, 6);

    var result = [
        IduIT.Core.Mapping.Style.GeometryStyleUtil.point(radius, [0,255 , 255, 0.1], 2, [0, 0, 255, 0.7])
    ];
    var title = this.get("title")
    result.push(
        IduIT.Core.Mapping.Style.GeometryStyleUtil.textLabel({
          color: "red",
          text: title,
          offsetY: 15,
          fontSize: 19,
          fontStyle: IduIT.Core.Mapping.Style.ELabelTextFontStyle.None
     }));
   return result;
}
Geometrie-Editor (wie cardo3) IduIT.cardo.Core.CoreModules.Mapping.GeometryEditor.Default

Standard für Geometrie wie cardo3:

[
IduIT.Core.Mapping.Style.GeometryStyleUtil.polygon(2, "orange", [255, 165, 0, 0.5]/*orange mit 50%*/),
IduIT.Core.Mapping.Style.GeometryStyleUtil.line(2, "red"),
IduIT.Core.Mapping.Style.GeometryStyleUtil.point(5, "green")
]

Geometrie-Editor IduIT.cardo.Core.CoreModules.Mapping.GeometryEditor.VertexEditMode

Style für Geometrie im Bearbeitungsmodus.

Achtung: hier ist keine Style-Funktion zulässig! Standard für Geometrie im cardo4:

[
IduIT.Core.Mapping.Style.GeometryStyleUtil.polygon(2, "orange", [0, 0, 255, 0.5]/*blue mit 50%*/),
IduIT.Core.Mapping.Style.GeometryStyleUtil.line(2, "blue")
IduIT.Core.Mapping.Style.GeometryStyleUtil.point(5, "blue")
]
Geometrie-Editor IduIT.cardo.Core.CoreModules.Mapping.GeometryEditor.VertexEditModeVertexStyle

(Style für die Stützpunkte)

Achtung: hier ist keine Style-Funktion zulässig! Standard für Stützpunkte im cardo4:

[
 //blauer Punkt
 IduIT.Core.Mapping.Style.GeometryStyleUtil.vertexPoints(4, '#0000CC'),
 new ol.style.Style({
 //Anfangspunkt der Geometrie
   image: new ol.style.Circle({
   radius: 5,
   stroke: new ol.style.Stroke({
    width: 2,
    color: '#0000CC'
   }),
   fill: new ol.style.Fill({
    color: '#00CCCC'
   })
  }),
  geometry: function (feature) {
   var geom = feature.getGeometry();
   if (geom instanceof ol.geom.MultiPolygon)
    return new ol.geom.MultiPoint(geom.getPolygons().map(function (p) { return p.getFirstCoordinate(); }));
   else if (geom instanceof ol.geom.MultiLineString)
    return new ol.geom.MultiPoint(geom.getLineStrings().map(function (l) { return l.getFirstCoordinate(); }));
   else if (geom instanceof ol.geom.MultiPoint)
    return geom;
   else
    return new ol.geom.Point(geom.getFirstCoordinate());
  }
 })
]
Messwerkzeug (Anzeige) Messwerkzeug (Zeichnen) IduIT.cardo.Core.Applications.OpenLayers.Components.MeasureDisplayStyle IduIT.cardo.Core.Applications.OpenLayers.Components.MeasureDrawStyle
Koordinaten-Umrechner IduIT.cardo.Core.Applications.CoordinateTransform.Components.CoordTransformComponent

Standard für Koordinate in der Karte:

IduIT.Core.Mapping.Style.GeometryStyleUtil.point(5, 'blue')
Suchprovider Gazetteer IduIT.cardo.Core.CoreModules.Search.Providers.GazetteerSearchProvider
Suchprovider Flurstücke IduIT.App.ALKISPro.AlkisUtilsApplication.SearchProviders.AlkisSearchProvider
Karte und cardo4 Proxy IduIT.cardo.Map.VectorLayerSelection.LAYERNAME
Geometrie-Aktionen IduIT.cardo.Core.CoreModules.Mapping.Ui.LayerGeomOps

Standard (für Funktion im Kontextmenü der Ebene am Kartenthemenbaum):

[
IduIT.Core.Mapping.Style.GeometryStyleUtil.polygon(2, "orange", [255, 215, 0, 0.5]/*gold*/),
IduIT.Core.Mapping.Style.GeometryStyleUtil.line(2, "chocolate"),
IduIT.Core.Mapping.Style.GeometryStyleUtil.point(5, "chocolate")
]
Geometrie anzeigen IduIT.cardo.Map.VectorLayerSelection.DEFAULT
Standard (für die Funktion Geometrie in Karte anzeigen oder Klick auf Geometriebutton in der Sachdatenanzeige - pinke Geometrie)

Für die Symbolanpassungen der Routinganwendung informieren Sie sich bitte unter Adminbeschreibung Routing.

Beispiele

Einfacher Punkt:

```javascript
IduIT.Core.Mapping.Style.GeometryStyleUtil.point(5, 'red')
```

Punkt und Linie

```javascript
[
 IduIT.Core.Mapping.Style.GeometryStyleUtil.point(5, 'red'),
 IduIT.Core.Mapping.Style.GeometryStyleUtil.line(5, 'red')
]
```

Polygon

	[
	 IduIT.Core.Mapping.Style.GeometryStyleUtil.line(2, 'red'),
	 IduIT.Core.Mapping.Style.GeometryStyleUtil.polygon(2, [0, 0, 0, 0], [255, 255, 255, 0.5])
	]

Das Polygon erwartet folgende Parameter, wobei die ersten zwei Parameter derzeit noch nicht ausgewertet werden: - Linienbreite - Linienfarbe im Format [Red,Green,Blue,Alpha], wobei Alpha eine Zahl zwischen 0 (transparent) und 1 (deckend) ist - Füllfarbe im Format [Red,Green,Blue,Alpha], wobei Alpha eine Zahl zwischen 0 (transparent) und 1 (deckend) ist

Hinweise: Beachten Sie, bei einem Polygon darf die Linienbreite nicht 0 sein. Werden bspw. für Linie und Flächenrahmen unterschiedliche Farben definiert (Messwerkzeug), so muss zuerst die Linie und dann die Flächendefinition erfolgen. Die Symbolik für die Linie wird unter den Flächenrahmen gezeichnet und sollte nicht breiter als der Flächenrahmen sein.

Funktion mit Titel (kann für Gazetteer verwendet werden)

```javascript
function(res)
{
  var result = [
	IduIT.Core.Mapping.Style.GeometryStyleUtil.point(5, 'red'),
	IduIT.Core.Mapping.Style.GeometryStyleUtil.line(5, 'red')
  ];

  var title = this.get ? this.get("$title") : null;
  if (title)
  {
	result.push(
	  IduIT.Core.Mapping.Style.GeometryStyleUtil.textLabel({
		color: "red",
		text: title
	  }));
  }
  return result;
}

```

Beschriftung für bspw. Messwerkzeug

IduIT.Core.Mapping.Style.GeometryStyleUtil.textLabel
({
          color: "green",
          fontSize: 19,
          fontStyle: IduIT.Core.Mapping.Style.ELabelTextFontStyle.Italic |
          IduIT.Core.Mapping.Style.ELabelTextFontStyle.Bold
})

Beispiel für kuriv, fett und grün.

Hinweis: wenn kein fontStyle angegeben ist bold Standard.

API

Für die Nutzung der globalen Symbole können alle Anwendungen auf Cardo4.Env.globalSymbolManager zugreifen.

Beispiel:

//getOlStyle(typeName:string,fallbackStyle:IduIT.cardo.Core.CoreModules.Mapping.OLStylesType)
const featureStyle = Cardo4.Env.globalSymbolManager.getOlStyle(
	'IduIT.cardo.Core.Applications.CoordinateTransform.Components.CoordTransformComponent',
	IduIT.Core.Mapping.Style.GeometryStyleUtil.point(5, 'blue')
);
Erweiterung auf Feature-Ebene

Die Kartenanwendung stellt die Standard-Aktion "Geometrie in Karte anzeigen" bereit. Dabei wird ein Feature übergeben (Geometrie+Attribute).

Wenn das Feature über ein Attribut mit Namen $globalStyleName verfügt, dann wird mit diesem Bezeichner ebenfalls in den Symbollisten nachgeschlagen und der dort hinterlegte Stil verwendet.

Einschränkungen

Beachten Sie bitte, das z.Z. folgende Einschränkungen gegeben sind:

  • Die Einstellungen sind nur als administrative Einstellungen definiert, d.h. Benutzer können keine eigenen Symbole definieren.

  • Die angepassten Stile werden u.U. nicht zu 100% im Ausdruck mit beachtet.

Beispiel

Beispiel für den Koordinatenumrechner, um das cardo3 Kreuz der Koordinatenanzeige einzurichten. Passen Sie wenn nötig noch die Farbe, bzw. die Größe an.

function(res)
  {
    var result = [               
    ];        
    result[0] = new ol.style.Style({
       image: new ol.style.RegularShape({
            stroke: new ol.style.Stroke({color: 'black', width: 2}),
            points: 4,
            radius: 10,
            radius2: 0,
            angle: 0,
            fill: new ol.style.Fill({color: '#000000'})
         })
      });               
 return result;
}


Zuletzt geändert: 21.11.2022 08:12:35 (erstmals erstellt 16.02.2019)