Die Kartenansicht zeigt eine Liste bevorstehender Ereignisse neben Karten an. So können Nutzer den Standort eines Ereignisses anzeigen oder bearbeiten oder den Standort für neue Ereignisse festlegen.
Standardmäßig zeigt die Ereignisliste auf der linken Seite Termine ab dem aktuellen Datum an. Um dieses Verhalten anzupassen, verwenden Sie die Eigenschaften map_start und map_end.
Um Google Maps zu verwenden, stellen Sie sicher, dass Sie Ihren eigenen Google API-Schlüssel hinzufügen auf Ihrer Seite.
Fügen Sie die Kartenansicht wie folgt zum Scheduler hinzu:
1. Binden Sie die Code-Datei des Kartenanbieters wie unten gezeigt auf Ihrer Seite ein:
<!-- Verwenden Sie Ihren eigenen Google API-Schlüssel, um Google Maps einzubinden -->
<script src="//maps.google.com/maps/api/js?key=[your Google API key]&sensor=false"
type="text/javascript"></script>
Sie können den Kartenanbieter wechseln und die Einstellungen anpassen, falls nötig. Änderungen werden beim nächsten Rendern der Karte übernommen.
2. Aktivieren Sie das Map view-Plugin:
scheduler.plugins({
map_view: true
});
3. Fügen Sie den Tab der Ansicht in das Markup des Schedulers ein:
<div id="scheduler_here" class="dhx_cal_container" ...>
<div class="dhx_cal_navline">
...
<div class="dhx_cal_tab" data-tab="map"></div>
</div>
...
</div>
4. Legen Sie die Bezeichnung für den Tab fest:
//'map_tab' entspricht dem Namen unseres div
scheduler.locale.labels.map_tab = "Map";
5. Fügen Sie einen Abschnitt im Lightbox-Formular hinzu, um den Standort des Ereignisses zu verwalten:
scheduler.config.lightbox.sections=[
{name:"description", height:50,map_to:"text", type:"textarea", focus:true},
{name:"location", height:43, map_to:"event_location", type:"textarea"},
{name:"time", height:72, type:"time", map_to:"auto"}
]
6. Definieren Sie ein Label für den neuen Abschnitt:
scheduler.locale.labels.section_location = "Location";
7. Initialisieren Sie den Scheduler:
//'map' ist der Standardname für die Kartenansicht
scheduler.init('scheduler_here',new Date(2024,5,11),"map");
dhtmlxScheduler unterstützt Google Maps, OpenStreetMaps und Mapbox als Kartenanbieter.
Um einen Kartenanbieter einzurichten, gehen Sie wie folgt vor:
1. Binden Sie die Kartenbibliothek auf Ihrer Seite ein, zum Beispiel Google Maps:
<!-- Verwenden Sie Ihren eigenen Google API-Schlüssel, um Google Maps einzubinden -->
<script src="//maps.google.com/maps/api/js?key=[your Google API key]&sensor=false"
type="text/javascript"></script>
2. Konfigurieren Sie bei Bedarf Einstellungen über die Option map_settings, zum Beispiel:
scheduler.config.map_settings = {
initial_position: {
lat: 48.724,
lng: 8.215
}
}
...
scheduler.init('scheduler_here',new Date(2024,5,11),"map");
3. Geben Sie den Namen des Kartenanbieters auf eine der folgenden Arten an:
scheduler.config.map_view_provider = "googleMap";
...
scheduler.init('scheduler_here',new Date(2024,5,11),"map");
Verfügbare Werte sind: "googleMap", "openStreetMaps", "mapbox".
scheduler.config.map_settings = {
view_provider: "googleMap"
}
...
scheduler.init('scheduler_here',new Date(2024,5,11),"map");
Ab Version 7.1 werden die meisten Karteneinstellungen über die Eigenschaft map_settings gesetzt. Die Standardeinstellungen sind:
scheduler.config.map_settings = {
initial_position: {
lat: 48.724,
lng: 8.215
},
error_position: {
lat: 15,
lng: 15
},
initial_zoom: 1,
zoom_after_resolve: 15,
info_window_max_width: 300,
resolve_user_location: true,
resolve_event_location: true,
view_provider: "googleMap"
}
...
scheduler.init('scheduler_here',new Date(2024,5,11),"map");
Diese Eigenschaften umfassen:
Eigene Einstellungen wie Tokens können innerhalb von map_settings hinzugefügt werden, zum Beispiel:
scheduler.config.map_settings.accessToken = "pk.eyJ...";
scheduler.xy.map_date_width – Breite der Datumsspalte
scheduler.xy.map_description_width – Breite der Beschreibungsspalte
Falls die eingebauten Kartenanbieter nicht Ihren Anforderungen entsprechen, können Sie einen eigenen Map Adapter erstellen, indem Sie eine Klasse implementieren, die das Map Adapter-Interface erfüllt. Sie sollte folgende Methoden enthalten:
interface IMapAdapter {
// initialisiert eine Karteninstanz mit den angegebenen Optionen
initialize(container: HTMLElement, options: IMapSettings): void;
// entfernt die Karteninstanz beim Wechsel von der Kartenansicht und gibt Ressourcen frei
destroy(container: HTMLElement): void;
// fügt einen Marker für das Ereignis auf der Karte hinzu
addEventMarker(event: ICalendarEvent): void;
// entfernt den Marker für eine bestimmte eventId
removeEventMarker(eventId: string): void;
// aktualisiert den Marker für das Ereignis
updateEventMarker(event: ICalendarEvent): void;
// entfernt alle Marker von der Karte
clearEventMarkers(): void;
// zentriert die Karte auf die angegebene Position
setView(latitude: number, longitude: number, zoom: number): void;
// verarbeitet Klicks auf Ereignisse im Scheduler
onEventClick(event: ICalendarEvent): void;
// löst eine Adress-String in Koordinaten auf, gibt ein Promise mit {lat, lng} zurück
resolveAddress(address: string): Promise<IMapPosition>;
}
Für die korrekte Anzeige in der Kartenansicht benötigen Datenobjekte einige zusätzliche Eigenschaften. Die folgenden Eigenschaften sind erforderlich:
Stellen Sie sicher, dass Ihre .php-Datei mit den Daten Ihrer Datenbank übereinstimmt.
Die Kartenansicht verwendet vier Labels in der Locale:
In der Regel werden die ersten beiden Labels beim Hinzufügen des Ansicht-Tabs gesetzt, während die letzten beiden nur angepasst werden sollten, wenn in eine andere Sprache als Englisch lokalisiert wird.
Ab Version 7.0 können Sie die Markerformen anpassen, indem Sie die Methode createMarker()
der Kartenansicht überschreiben:
const { AdvancedMarkerElement,
PinElement } = await google.maps.importLibrary("marker");
scheduler.ext.mapView.createMarker = function(config){
const pinViewGlyph = new PinElement({
glyphColor: "white",
});
return new AdvancedMarkerElement({
...config,
content: pinViewGlyph.element,
});
};
Weitere Details finden Sie in der Google Maps Dokumentation.