Kartor och indikatorer — Utöka¶
Det här avsnittet beskriver hur du utökar modulen Kartor och indikatorer med anpassad funktionalitet. Det inkluderar att koppla ett Alarm-objekt till en Kartvy för livefiltrering av larm, samt att skapa anpassade kartindikatorer med zoomnavigering, länkning och statushantering.
Innan du börjar, se till att du är bekant med grunderna i modulen Kartor och indikatorer. Om inte, se Kartor och indikatorer — Kom igång.
Koppla Alarm till Kartvy¶
Ett Alarm-objekt kan kopplas till en Kartvy så att det filtrerar larm baserat på vilka statuspinnar eller klusterpinnar som är synliga för tillfället. Det ger användaren både en fullständig systemöversikt och stationsspecifik kontroll.
Lägg till följande onLoad-skript i den Arbetsvy som innehåller både Kartvyn och Alarm-objektet. Detta aktiverar alla systemlarm i larmlistan:
var local = alarmNames.split(",");
for (var index = 0; index < local.length; index++) {
this.view.Alarm1.addGroup(local[index]);
}
app.alarmView = this.view;
scMap.alarmList = this.view.Alarm1;
scMap.updateAlarmList(scMap.mapView, scMap.alarmList);
Note
Ersätt Alarm1 med namnet på det Alarm-objekt som är placerat i vyn.
alarmNames är en intern Datalager-variabel som innehåller en kommaseparerad
sträng med alla larmgruppsnamn i systemet. Den behöver inte konfigureras manuellt.
Nästa steg: onLoad-skriptet för Kartvyn hanterar redan uppdateringar av larmlistan
om scMap.alarmList är satt. Se till att onLoad-skriptet för Kartvyn är konfigurerat
enligt följande:
scMap.mapView = this;
scMap.initClusters(this);
if (scMap.alarmList) scMap.updateAlarmList(this, scMap.alarmList);
Alarm-objektet är nu fullt kopplat till Kartvyn och visar aktiva larm baserat på vad som för tillfället är synligt på kartan.

Skapa anpassade kartindikatorer¶
Följande avsnitt förklarar de viktigaste koncepten bakom de inbyggda indikatorerna och hur de tillämpas när du skapar egna. Snarare än att dokumentera ett specifikt objekt ligger fokus på de underliggande mönstren — zoomnavigering, länkning, statushantering och klustring — så att integratören fritt kan tillämpa dem på valfri anpassad indikator.
Tip
För komplexa indikatorer som statuspinnar och klusterpinnar rekommenderas det starkt att kopiera det befintliga objektet och modifiera det istället för att bygga från grunden. Det bevarar all befintlig logik och tillåter samtidigt full visuell anpassning.
Zoomnivåer och navigering¶
Kartvy-objekt stöder zoomintervall, som styr vid vilken zoomnivå varje objekt är synligt. Det är ett kraftfullt verktyg för att minska röran — objekt på en högre nivå kan guida användaren till mer detaljerade vyer på lägre zoomnivåer genom att ange en målzoomnivå vid klick.
För att implementera detta, lägg till en zoomTarget-egenskap på din anpassade indikator och använd följande onClick-skript:
var mv = this.geo.mapView;
mv.zoomLevel = this.zoomTarget || 15;
mv.latitude = this.geo.latitude;
mv.longitude = this.geo.longitude;
Det här skriptet gör tre saker när indikatorn klickas:
- Sätter kartans zoomnivå till värdet av zoomTarget. Om inget värde är angivet används
standardvärdet
15. - Centrerar kartan på indikatorns latitud.
- Centrerar kartan på indikatorns longitud.
Genom att kombinera zoomintervall med en zoomTarget-egenskap kan indikatorer på högre zoomnivåer fungera som navigeringshjälpmedel — ett klick zoomar in och avslöjar de mer detaljerade indikatorerna nedanför.
Tip
En bra praxis är att ange zoomTarget för en indikator på högre nivå till den lägsta zoomnivå vid vilken dess underordnade indikatorer blir synliga. Det skapar en sömlös navigeringsupplevelse.
Länkning¶
Anpassade indikatorer kan länkas till en Arbetsvy, en katalog eller ett specifikt objekt beroende på användningsfallet. Det styrs genom att lägga till en linkedView- eller targetObject-egenskap på indikatorn.
Länka till en Arbetsvy¶
För att länka en indikator till en Arbetsvy, lägg till en linkedView-egenskap och sätt
dess värde till sökvägen för den önskade Arbetsvy som slutar med .kvie. Lägg sedan
till följande onClick-skript:
Länka till en katalog¶
För att länka en indikator till en katalog, lägg till en linkedView-egenskap och sätt dess värde
till en katalogsökväg som System/Videdal. Vid klick öppnas helskärmsmenyn
på den katalogen, vilket gör att användaren kan navigera till önskad Arbetsvy.
var _parts = this.linkedView.split("/");
var root = _parts[0];
var dir = _parts[_parts.length - 1];
app._subNavTarget = { root: root, dir: dir };
Note
Kataloglänkning kräver att helskärmsmenyn är tillgänglig. Se Navigation — Kom igång för mer information.
Länka till ett specifikt objekt¶
För att länka en indikator direkt till ett specifikt objekt, lägg till en targetObject-egenskap och sätt dess värde till namnet på målobjektet. Lägg sedan till följande onClick-skript:
Det navigerar till den Arbetsvy som innehåller målobjektet och markerar det. För mer information om GoTo, se Navigation — Utöka.
Tip
Använd linkedView med en .kvie-sökväg för att navigera till en specifik Arbetsvy,
använd linkedView med en katalogsökväg för att öppna helskärmsmenyn på den
platsen, och använd targetObject när du vill ta användaren direkt till
ett specifikt objekt som en sensor eller ett styrelement.
Pinnstatus¶
PinStatus-objektet är det mest komplexa av de inbyggda indikatorerna. Det gör automatiskt
två saker när det länkas till en Arbetsvy:
- Larmräkning — frågar databasen efter alla larm kopplade till den länkade
Arbetsvy och lyssnar på ändringar. Resultatet återspeglas i pinnens
alarmCount-egenskap. - Statusfärg — frågar alla objekt i den länkade Arbetsvy och mappar deras
suffixsignaler till en statusnivå med hjälp av skriptet
scSuffix. Pinncirkelns färg uppdateras automatiskt för att återspegla den högsta aktiva statusen:
| Status | Färg |
|---|---|
| Larm / Fel | Röd |
| Varning | Gul |
| Aktiv / OK | Grön |
| Ingen status | Grå |
Statusmappningen konfigureras i skriptet scSuffix via
objektet suffixObj.Views, som definierar vilka objektsuffix som motsvarar vilken
statuskategori. Det behöver inte ändras när du skapar en anpassad indikator.
Rekommendation
Snarare än att bygga en anpassad statusindikator från grunden rekommenderas det starkt
att kopiera det befintliga PinStatus-objektet och modifiera det efter dina
behov. Skriptet är tätt kopplat till skriptet scSuffix och databasstrukturen,
vilket gör det komplext att replikera korrekt. Kopiering säkerställer att all
befintlig logik bevaras och tillåter samtidigt full visuell anpassning.
Klusterhantering¶
Klustringssystemet i Kartvy drivs helt av funktionen initClusters() i skriptet scMap.
Den identifierar objekt genom att söka efter två specifika egenskaper:
- Ett objekt med en
roi-egenskap — behandlas som ett kluster - Ett objekt med en
status-egenskap — behandlas som en pin och potentiellt underordnat element
Det innebär att valfri anpassad indikator kan delta i klustringssystemet enbart genom att ha rätt egenskap. Det finns inget krav på ett specifikt objektnamn eller en specifik typ.
Note
initClusters() måste anropas i onLoad-skriptet för Kartvyn för att klustring
ska fungera. Se Kartor och indikatorer — Kom igång.
Göra en anpassad indikator klustermedveten¶
För att en anpassad indikator ska plockas upp som ett underordnat element av klustringssystemet
behöver den en status-egenskap. För det inbyggda PinStatus-objektet hanteras detta automatiskt
av dess skript — status uppdateras av en DatalagerListener när den länkade
Arbetsvy ändrar tillstånd.
För en anpassad indikator måste status underhållas av ett skript. Värdet ska
följa samma statushierarki som används av de inbyggda indikatorerna:
| Värde | Betydelse |
|---|---|
3 |
Larm / Fel |
2 |
Varning |
1 |
Aktiv / OK |
0 |
Ingen status |
Rekommendation
Snarare än att bygga ett anpassat kluster från grunden rekommenderas det starkt
att kopiera det befintliga klusterobjektet och modifiera det efter dina behov. Klustringslogiken
hanteras helt av skriptet scMap — kopiering säkerställer att ditt objekt
identifieras korrekt av initClusters() och tillåter samtidigt full
visuell anpassning.