Map View
Map View는 다가오는 이벤트 목록을 지도와 함께 표시하여 사용자가 이벤트의 위치를 확인하거나 수정하거나, 새로운 이벤트의 위치를 지정할 수 있도록 합니다.

초기화
Google Maps를 사용하려면, 페이지에 자신의 Google API 키를 추가해야 합니다.
Map View를 스케줄러에 추가하려면 아래 단계를 따라주세요:
- 아래와 같이 페이지에 지도 공급자 코드 파일을 포함합니다:
<-- Google Maps를 포함하려면 자신의 Google API 키를 사용하세요 -->
<script src="//maps.google.com/maps/api/js?key="[your" Google API key]&sensor="false""
type="text/javascript"></script>
지도 공급자를 변경하거나 설정을 조정할 수 있습니다. 변경 사항은 다음 지도 렌더링 시 적용됩니다.
- Map view 플러그인을 활성화합니다:
scheduler.plugins({
map_view: true
});
- 스케줄러 마크업에 뷰 탭을 추가합니다:
<div id="scheduler_here" class="dhx_cal_container" ...>
<div class="dhx_cal_navline">
...
<div class="dhx_cal_tab" data-tab="map"></div>
</div>
...
</div>
- 탭의 라벨을 설정합니다:
//'map_tab'은 div 이름과 일치해야 합니다
scheduler.locale.labels.map_tab = "Map";
- 이벤트 위치를 처리할 라이트박스 섹션을 추가합니다:
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"}
]
- 새 섹션의 라벨을 정의합니다:
scheduler.locale.labels.section_location = "Location";
- 스케줄러를 초기화합니다:
//'map'은 Map View의 기본 이름입니다
scheduler.init('scheduler_here',new Date(2024,5,11),"map");
지도 공급자 설정
dhtmlxScheduler는 Google Maps, OpenStreetMaps, Mapbox를 지도 공급자로 지원합니다.
지도 공급자를 설정하려면 다음 단계를 따르세요:
- 예를 들어 Google Maps의 경우, 지도 라이브러리를 페이지에 포함합니다:
<-- Google Maps를 포함하려면 자신의 Google API 키를 사용하세요 -->
<script src="//maps.google.com/maps/api/js?key="[your" Google API key]&sensor="false""
type="text/javascript"></script>
- 필요하다면 map_settings 옵션을 사용하여 설정을 구성합니다. 예:
scheduler.config.map_settings = {
initial_position: {
lat: 48.724,
lng: 8.215
}
}
...
scheduler.init('scheduler_here',new Date(2024,5,11),"map");
- 다음 중 한 가지 방법으로 지도 공급자 이름을 지정합니다:
- map_view_provider 옵션을 통해:
scheduler.config.map_view_provider = "googleMap";
...
scheduler.init('scheduler_here',new Date(2024,5,11),"map");
사용 가능한 값: "googleMap", "openStreetMaps", "mapbox".
- 또는 map_settings의 view_provider 속성을 통해:
scheduler.config.map_settings = {
view_provider: "googleMap"
}
...
scheduler.init('scheduler_here',new Date(2024,5,11),"map");
지도 관련 구성 옵션
scheduler.config 객체
v7.1부터 대부분의 지도 구성 옵션은 map_settings 속성 내에서 설정됩니다. 기본 설정은 다음과 같습니다:
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");
이 속성들은 다음을 포함합니다:
- initial_position - 지도의 시작 위치
- error_position - 이벤트 위치를 찾을 수 없을 때 표시되는 위치
- initial_zoom - Map View의 초기 확대 수준
- zoom_after_resolve - 사용자의 위치를 표시할 때 사용하는 확대 수준 (권한 허용 시)
- info_window_max_width - Map View의 지도 팝업 최대 너비
- resolve_user_location - 사용자의 위치 공유 요청을 표시할지 여부
- resolve_event_location - 좌표가 저장되어 있지 않은 경우 이벤트 위치를 찾을지 여부
- view_provider - 지도 공급자 선택
토큰 등 사용자 정의 설정은 map_settings 내부에 추가할 수 있습니다. 예:
scheduler.config.map_settings.accessToken = "pk.eyJ...";
scheduler.xy 객체
scheduler.xy.map_date_width - 날짜 열의 너비
scheduler.xy.map_description_width - 설명 열의 너비
커스텀 지도 어댑터 만들기
내장 지도 공급자가 요구 사항을 충족하지 않는 경우, map adapter 인터페이스를 준수하는 클래스를 구현하여 커스텀 지도 어댑터를 만들 수 있습니다. 다음 메서드를 포함해야 합니다:
interface IMapAdapter {
// 제공된 옵션으로 지도 인스턴스 초기화
initialize(container: HTMLElement, options: IMapSettings): void;
// Map View에서 벗어날 때 지도 인스턴스 제거 및 리소스 해제
destroy(container: HTMLElement): void;
// 이벤트에 대한 마커 추가
addEventMarker(event: ICalendarEvent): void;
// 특정 eventId의 마커 제거
removeEventMarker(eventId: string): void;
// 이벤트의 마커 업데이트
updateEventMarker(event: ICalendarEvent): void;
// 모든 이벤트 마커 제거
clearEventMarkers(): void;
// 지정된 위치로 지도 중심 이동
setView(latitude: number, longitude: number, zoom: number): void;
// 스케줄러에서 이벤트 클릭 처리
onEventClick(event: ICalendarEvent): void;
// 문자열 주소를 좌표로 변환, {lat, lng}를 반환하는 Promise
resolveAddress(address: string): Promise<IMapPosition>;
}
데이터 항목 요구 사항
Map View에서 올바르게 렌더링하려면 데이터 항목에 몇 가지 추가 속성이 필요합니다. 필수 속성은 다음과 같습니다:
- start_date (Date 또는 string) - 이벤트 시작 시각, 기본 형식 '%Y-%m-%d %H:%i'
- end_date (Date 또는 string) - 이벤트 종료 시각, 기본 형식 '%Y-%m-%d %H:%i'
- text (string) - 이벤트 설명
- location (string) - 이벤트 위치
- lat (number) - 이벤트 위치의 위도
- lng (number) - 이벤트 위치의 경도
.php 파일이 데이터베이스 데이터와 일치하는지 확인하세요.