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 |
Koordinaten-Umrechner | IduIT.cardo.Core.Applications.CoordinateTransform.Components.CoordTransformComponent |
Standard:
|
|
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):
|
Beispiele
Einfacher Punkt:
IduIT.Core.Mapping.Style.GeometryStyleUtil.point(5, 'red')
Punkt und Linie
[ IduIT.Core.Mapping.Style.GeometryStyleUtil.point(5, 'red'), IduIT.Core.Mapping.Style.GeometryStyleUtil.line(5, 'red') ]
Polygon
[ IduIT.Core.Mapping.Style.GeometryStyleUtil.line(5, 'red'), IduIT.Core.Mapping.Style.GeometryStyleUtil.polygon(0, [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 (wird derzeit nicht ausgewertet)
- Linienfarbe (wird derzeit nicht ausgewertet)
- Füllfarbe im Format [Red,Green,Blue,Alpha] wobei Alpha eine Zahl zwischen 0 (transparent) und 1 (deckend) ist
Soll das Polygon eine Umrandungslinie bekommen, kann im Moment ein GeometryStyleUtil.line angegeben werden.
Funktion mit Titel (kann für Gazetteer verwendet werden)
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; }
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: 23.02.2021 19:40:10 (erstmals erstellt 16.02.2019)