Suche

Überblick

Die Suche nach räumlichen Objekten wie z.B. Adressen, POIs oder Flurstücken ist eine zentrale Funktion in vielen Apps. Das Bundle omnisearch stellt eine Oberfläche bereit, die für den Einsatz auf Desktop- und Mobilgeräten optimiert ist und ein zentrales Eingabefeld für die Suche bietet. Weitere Bundles können Datenquellen für Suchen bereitstellen, ohne eine grafische Oberfläche bereitstellen zu müssen. Wenn mehr als eine Datenquelle zur Verfügung steht, kann der Nutzer zwischen diesen wählen.

omnisearch

Oberfläche

Benötigte Bundles: omnisearch, mind. ein Datenquellen-Bundle

Zoomen auf einen Treffer

Bei Auswahl eines Suchtreffers wird die Ansicht auf den räumlichen Ausschnitt ("Bounding-Box") des gefundenen Objekts gezoomt, wenn es sich um eine Linie oder eine Fläche handelt.

Bei Punkt-Objekten wird in einen vorkonfigurierten Maßstab zum gefundenen Objekt gezoomt. Dieser wird wie folgt festgelegt:

{
  "omnisearch": {
    "ZoomHandler": {
      "scale": 1000
    }
  }
}

Optional ist das Zoomen auf einen festen Maßstab für Linien- oder Flächen-Objekte möglich. Hierzu ist folgende Konfiguration nötig:

{
  "omnisearch": {
    "ZoomHandler": {
      "scale": 1000,
      "fixedScale": true
    }
  }
}

Es ist möglich, unterschiedliche Maßstäbe für verschiedene Datenquellen festzulegen. Die Zuordnung von Datenquelle und Maßstab erfolgt anhand der jeweiligen ID, wie im folgenden Beispiel dargestellt.

{
  "omnisearch": {
    "ZoomHandler": {
      "scaleByStore": {
        "store01": 5000,
        "store02": 25000
      }
    }
  }
}

Popups für ein Suchergebnis anzeigen

Um ein Standard-Popup für ein Suchergebnis anzuzeigen, setzen Sie popupEnabled auf true und fügen Sie das Bundle popups-default zu Ihrer App hinzu.

{
    "agssearch": {
        "AGSStore": [
            {
                "id": "Airports",
                "url": "https://myserver/arcgis/rest/services/Airports/MapServer/0",
                "popupEnabled": true
            }
        ]
    }
}

Um ein individuelles Popup für ein Suchergebnis anzuzeigen, konfigurieren Sie ein popupTemplate wie im folgenden Beispiel:

{
    "agssearch": {
        "AGSStore": [
            {
                "id": "Airports",
                "url": "https://myserver/arcgis/rest/services/Airports/MapServer/0",
                "popupTemplate": {
                    "title": " {name}",
                    "content": [
                        {
                            "type": "fields",
                            "fieldInfos": [
                                {
                                    "fieldName": "myfield",
                                    "label": "My field"
                                }
                            ]
                        }
                    ]
                }
            }
        ]
    }
}

Einen Überblick über die Konfiguration individueller Popups finden Sie unter Individuelle Popups.

Darstellung eines Treffers

Suchtreffer werden abhängig von ihrer Geometrie in der Karte dargestellt: Punkte durch einen Marker, Linien und Flächen durch eine Einfärbung. Die Darstellung kann per Konfiguration geändert werden.

Symbole werden gemäß der Esri Symbol-Definition definiert. Um 3D-Symbole zu konfigurieren, muss dem Geometrietypen jeweils der Postfix -3d angehängt werden.

Die folgende Konfiguration zeigt die Standardwerte für die jeweiligen Typen:

{
  "omnisearch": {
    "DrawHandler": {
      "_symbolTable": {
        "point": {
          "url": "resource('images/mapMarker.png')",
          "width": 37,
          "height": 36,
          "xoffset": 4,
          "yoffset": 16,
          "type": "esriPMS"
        },
        "polyline": {
          "color": [
            10,
            10,
            10,
            255
          ],
          "style": "esriSLSSolid",
          "type": "esriSLS",
          "width": 1.3
        },
        "polygon": {
          "type": "esriSFS",
          "style": "esriSFSSolid",
          "color": [
            125,
            205,
            234,
            100
          ],
          "outline": {
            "type": "esriSLS",
            "style": "esriSLSSolid",
            "color": [
              10,
              10,
              10,
              255
            ],
            "width": 1
          }
        },
        "point-3d": {
          "url": "resource('images/mapMarker.png')",
          "width": 37,
          "height": 36,
          "xoffset": 4,
          "yoffset": 16,
          "type": "esriPMS"
        },
        "polyline-3d": {
          "color": [
            10,
            10,
            10,
            255
          ],
          "style": "esriSLSSolid",
          "type": "esriSLS",
          "width": 1.3
        },
        "polygon-3d": {
          "type": "esriSFS",
          "style": "esriSFSSolid",
          "color": [
            125,
            205,
            234,
            100
          ],
          "outline": {
            "type": "esriSLS",
            "style": "esriSLSSolid",
            "color": [
              10,
              10,
              10,
              255
            ],
            "width": 1
          }
        }
      }
    }
  }
}
Weitere Informationen zur Konfiguration können der Bundle-Dokumentation entnommen werden.

Datenquellen

ArcGIS Map- oder Feature-Layer

Benötigtes Bundle: agssearch

Als Datenquellen können ArcGIS Map- oder Feature-Layer genutzt werden, die die Operation Query unterstützen.

Automatische Registrierung

Wenn die automatische Registrierung aktiv ist und der Parameter useIn den Wert omnisearch enthält, werden alle in der Karte sichtbaren ArcGIS Map- und Feature-Layer für die Suche verwendet.

Für die Suche wird das displayField aus den Metadaten des Dienstes verwendet. Der Titel des Layers und seine Beschreibung werden ebenfalls vom Dienst übernommen.

Über die manuelle Konfiguration kann diese Konfiguration wie folgt vorgenommen werden:

{
    "agssearch": {
        "AutoStoreRegistration": {
            "componentEnabled": true,
            "useIn": [
                "omnisearch",
                "selection"
            ]
        }
    }
}

Manuelles Registrieren

Mit folgender Konfiguration können Layer, die in der Karte verwendet werden, für die Suche registriert werden:

{
    "agssearch": {
        "AGSStore": [
            {
                "id": "store01",
                "title": "Gemeinden in Deutschland (MapServer Layer)",
                "layerId": "grenzen/0",
                "useIn": [
                    "omnisearch"
                ],
                "omniSearchSearchAttr": "g_name",
                "omniSearchDefaultLabel": "Enter search term...",
                "omniSearchPageSize": 20
            },
            {
                "id": "store02",
                "title": "Gemeinden in Deutschland (Feature Layer)",
                "layerId": "gemeindelayer",
                "useIn": [
                    "omnisearch"
                ],
                "omniSearchSearchAttr": "g_name",
                "omniSearchDefaultLabel": "Enter search term...",
                "omniSearchPageSize": 20
            }
        ]
    },
    "map-init": {
        "Config": {
            "map": {
                "layers": [
                    {
                        "id": "grenzen",
                        "type": "AGS_DYNAMIC",
                        "url": "https://services.conterra.de/arcgis/rest/services/common/grenzen/MapServer",
                        "sublayers": [
                            {
                                "id": 0,
                                "title": "Gemeinden"
                            }
                        ]
                    },
                    {
                        "id": "gemeindelayer",
                        "url": "https://services.conterra.de/arcgis/rest/services/common/grenzen/FeatureServer/0",
                        "type": "AGS_FEATURE"
                    }
                ]
            }
        }
    }
}

Alternativ kann die URL des Layers unabhängig von der Referenz auf eine Karten-Konfiguration definiert werden:

{
    "agssearch": {
        "AGSStore": [
            {
                "id": "store01",
                "title": "Gemeinden in Deutschland",
                "url": "https://services.conterra.de/arcgis/rest/services/common/grenzen/MapServer/0",
                "omniSearchSearchAttr": "g_name",
                "omniSearchDefaultLabel": "Enter search term...",
                "omniSearchPageSize": 20
            }
        ]
    }
}

Die folgenden Optionen stehen zur Konfiguration der Datenquellen zur Verfügung:

Name Beschreibung

omniSearchSearchAttr

Name des Attributs auf dem gesucht wird. Dieses muss vom Typ String sein. Wenn es weggelassen wird, wird das Display Field aus den Metadaten des Layers verwendet.

omniSearchLabelAttr

Name des Attributs, dessen Wert für die Trefferliste verwendet wird. Wenn es weggelassen wird, wird der Wert des Attributs omniSearchSearchAttr verwendet.

omniSearchLabelString

Ein angepasster String zur Darstellung der Ergebnisse. Mehrere Attribute können kombiniert werden.

Beispiel:

"${street}, ${town} (${country})" ergibt "Martin-Luther-King-Weg, Muenster (Germany)"

omniSearchPageSize

Anzahl der Ergebnisse in der Trefferliste pro Seite.

omniSearchDefaultLabel

Platzhalter für die Datenquelle im Suchdialog.

omniSearchPriority

Darstellungsreihenfolge bei mehreren Datenquellen. Je höher der Wert ist, desto weiter oben wird die Datenquelle angezeigt.

omniSearchAutoActivate

Wenn der Wert auf true gesetzt ist, wird diese Datenquelle beim Start der App ausgewählt.

Weitere Informationen zur Konfiguration können der Bundle-Dokumentation entnommen werden.

ArcGIS Locator

Benötigtes Bundle: locator-store

Für die Suche nach Adressen oder POIs können ArcGIS Geokodierungsservices genutzt werden. Mit dem Esri World Geocoding Service steht ein Suchdienst bereit, der für viele Länder Informationen bereithält. In Deutschland ist z.B. eine Hausnummer-scharfe Suche nach Adressen möglich.

Per Konfiguration kann die Suche auf einzelne Länder und/oder Kategorien (z.B. Adressen, Städte, POIs) beschränkt werden. Durch sog. Sichten kann eine feinere Eingrenzung auf bestimmte geographische Bereiche vorgenommen werden. Pro App können mehrere verschiedene Suchen oder Sichten konfiguriert werden.

Name Beschreibung

title

Titel der Datenquelle.

description

Beschreibung der Datenquelle.

omniSearchDefaultLabel

Platzhalter für die Datenquelle im Suchdialog.

url

URL zu einem ESRI Geolocation Service. Wenn dieser Wert leer ist, wird der World Geocoding Service genutzt.

countryCode

Der Standardwert ist eine leere Zeichenkette. Begrenzt die zurückgegebenen Vorschläge auf Werte in einem bestimmten Land. Unterstützte Werte sind der zweistellige ISO 3166-1 Ländercode oder der dreistellige ISO 3166-1 Ländercode. Siehe Esri Dokumentation .

categories

Der Standardwert ist ein leeres Array. Ein Ort oder Adresstyp, der zum Filtern der Ergebnisse verwendet werden kann. Siehe Esri Dokumentation .

{
    "locator-store": {
        "Config": {
            "title": "Address or place search",
            "description": "Find addresses or places.",
            "omniSearchDefaultLabel": "Address or place...",
            "url": "@@locator.service.url@@",
            "countryCode": "DEU",
            "categories": [
                "City",
                "District"
            ]
        }
    }
}
Weitere Informationen zur Konfiguration können der Bundle-Dokumentation entnommen werden.