|
TalMap SDK Libary Reference |
HOWTO: 나만의 툴바/레벨바 만드는 방법 |
|
요약
|
이 문서는 TalMapX Control 에서 제공하는 강력한 UI 기능을 사용하는 방법을 설명합니다.
TalMapX Control은 UI(User Interface)를 위해서 다양한 개체들을 제공합니다.
TalMapX Control이 제공하는 UI 개체로는 XUIButton, XUICheckBox, XUIImage, XUIImageList, XUIImageText, XUIPanel, UIStatic 등이 있습니다.
사용자는 이 문서를 통해 손쉽게 UI 개체들을 이용하는 방법을 학습할 수 있습니다.
또한 UI 개체들을 이용하여 자신만의 툴바 및 레벨바를 만들어 지도에 적용할 수 있습니다.
|
|
|
방법
|
1. TalMapX Control의 Control Manager를 구합니다.
2. Contorl Manager를 통해 UI Manger를 구합니다.
3. UI Manger를 통해 원하는 개체를 생성하여 툴바 및 레벨바를 구성합니다.
4. 생성 된 UI 개체의 이벤트들을 이용하여 툴바 및 레벨바가 동작하도록 기능을 추가합니다.
|
|
|
Example
|
|
<html>
<head>
<script language="javascript">
<!--
// toggle level bar
function ToggleLevelBar()
{
var ctrlman = m_Map.GetCtrlMan();
var uiman = ctrlman.GetUIMan();
if (uiman.GetShowLevelBar() == 0) {
uiman.SetShowLevelBar(1);
} else {
uiman.SetShowLevelBar(0);
}
}
var gCreatedLevelBar = false;
var gCreateToolBarStyle1 = false;
var gCreateToolBarStyle2 = false;
var gLevelBarBg;
// UI 생성
var btnLevel = new Array(13);
function CreateLevelBar()
{
if (gCreatedLevelBar == true) {
gLevelBarBg.DestroyUIObj();
for (var i = 0; i < btnLevel.length; i++)
{
btnLevel[i].DestroyUIObj();
}
gCreatedLevelBar = false;
return;
}
gCreatedLevelBar = true;
var ctrlman = m_Map.GetCtrlMan();
var uiman = ctrlman.GetUIMan();
var ctrlstate = ctrlman.GetControlState();
var dpsize = ctrlstate.GetSizeDP();
var util = m_Map.GetUtility();
var imageman = ctrlman.GetImageMan();
imageman.SetDefaultPath("http://www.talmap.co.kr/tutorial/image/level_ico");
// BackGround Image
var bg = gLevelBarBg = uiman.CreateUI_Button(uiman);
bg.SetParent(uiman);
bg.SetUIID(11);
bg.SetImageList("level_bg.png", 27, 167);
bg.SetBound(dpsize._CX-37, 127, 27, 167);
bg.SetAlpha(80);
bg.SetCanClick(0);
bg.SetCanDrag(1);
bg.AddEventMode(util.GetConstToValue("TMEVENTTYPE_MOUSELEAVE") |
util.GetConstToValue("TMEVENTTYPE_MOUSEENTER"));
// Zoom In Button
var btnZoomIn = uiman.CreateUI_Button(uiman);
btnZoomIn.SetParent(bg);
btnZoomIn.SetUIID(12);
btnZoomIn.SetImageList("level_btn_minus.png", 16, 20);
btnZoomIn.SetBound(11, 0, 16, 20);
btnZoomIn.SetCanClick(1);
btnZoomIn.SetCanDrag(1);
btnZoomIn.SetDragTracker(1);
btnZoomIn.AddEventMode(util.GetConstToValue("TMEVENTTYPE_MOUSEUP")|
util.GetConstToValue("TMEVENTTYPE_MOUSELEAVE")|
util.GetConstToValue("TMEVENTTYPE_MOUSEENTER"));
// Zoom Out Button
var btnZoomOut = uiman.CreateUI_Button(uiman);
btnZoomOut.SetParent(bg);
btnZoomOut.SetUIID(13);
btnZoomOut.SetImageList("level_btn_plus.png", 16, 20);
btnZoomOut.SetBound(11, bg.GetItemHeight()-20, 16, 20);
btnZoomOut.SetCanClick(1);
btnZoomOut.SetCanDrag(1);
btnZoomOut.SetDragTracker(1);
btnZoomOut.AddEventMode(util.GetConstToValue("TMEVENTTYPE_MOUSEUP") |
util.GetConstToValue("TMEVENTTYPE_MOUSELEAVE") |
util.GetConstToValue("TMEVENTTYPE_MOUSEENTER"));
// Level Button
var UIID = 14;
var CY = btnZoomIn.GetHeight() + 5;
for (var i = btnLevel.length-1; i > -1; i--){
btnLevel[i] = uiman.CreateUI_Button(uiman);
btnLevel[i].SetParent(bg);
btnLevel[i].SetUIID(UIID);
btnLevel[i].SetImageList("level_btn_position.png", 16, 9);
btnLevel[i].SetBound(8, CY, 22, 9);
btnLevel[i].SetCanClick(1);
btnLevel[i].SetCanDrag(1);
btnLevel[i].SetDragTracker(1);
btnLevel[i].SetImageAutoChange(0);
btnLevel[i].SetItemIndex(1);
btnLevel[i].AddEventMode(util.GetConstToValue("TMEVENTTYPE_MOUSEUP") |
util.GetConstToValue("TMEVENTTYPE_MOUSELEAVE") |
util.GetConstToValue("TMEVENTTYPE_MOUSEENTER"));
CY = CY + 9;
UIID++;
}
// 현재 Level 표출
MapLevel_Master(ctrlstate.GetLevel());
}
function MapLevel_Master(level)
{
if (gLevelBarBg == null) return;
// Image Index 설정 0~3
var SetEnabled = 0;
var SetDisabled = 1;
for (var i = 0; i < btnLevel.length; i++)
{
if (level == i) btnLevel[i].SetItemIndex(SetEnabled);
else btnLevel[i].SetItemIndex(SetDisabled);
}
}
var maxLogicalLevel = 13 - 1; // Map Max Level
var minLogicalLevel = 0; // Map Min Level
// Zoom In
function Map_ZoomIn()
{
var ctrlman = m_Map.GetCtrlMan();
var ctrlstate = ctrlman.GetControlState();
if (ctrlstate.GetLevel() > minLogicalLevel) {
ctrlstate.SetLevel(ctrlstate.GetLevel() - 1);
}
}
// Zoom Out
function Map_ZoomOut()
{
var ctrlman = m_Map.GetCtrlMan();
var ctrlstate = ctrlman.GetControlState();
if (ctrlstate.GetLevel() < maxLogicalLevel) {
ctrlstate.SetLevel(ctrlstate.GetLevel() + 1);
}
}
// Rotate Map
function Map_Rotate() {
var ctrlman = m_Map.GetCtrlMan();
ctrlman.SetMapRotation(1);
}
// History 뒤로
function HistoryPrev()
{
var ctrlman = m_Map.GetCtrlMan();
var ctrlstate = ctrlman.GetControlState();
ctrlstate.HistoryPrev();
}
// History 앞으로
function HistoryNext()
{
var ctrlman = m_Map.GetCtrlMan();
var ctrlstate = ctrlman.GetControlState();
ctrlstate.HistoryNext();
}
// 빌딩 3D 보기
function View3D()
{
var ctrlman = m_Map.GetCtrlMan();
var ctrlstate = ctrlman.GetControlState();
var util = m_Map.GetUtility();
var StateType = util.GetConstToValue("TMCTRLSTATE_DISPLAY_BUILDING_TYPE");
var type = ctrlstate.GetState(StateType);
switch(type) {
case 1:
ctrlstate.SetState(StateType, util.GetConstToValue("TMCTRLSTATE_CODE_BUILDING_3D_MASK"));
break;
case 16:
ctrlstate.SetState(StateType, util.GetConstToValue("TMCTRLSTATE_CODE_BUILDING_3D_1"));
break;
case 17:
ctrlstate.SetState(StateType, util.GetConstToValue("TMCTRLSTATE_CODE_BUILDING_3D_2"));
break;
case 18:
ctrlstate.SetState(StateType, util.GetConstToValue("TMCTRLSTATE_CODE_BUILDING_NORMAL"));
break;
default:
ctrlstate.SetState(StateType, util.GetConstToValue("TMCTRLSTATE_CODE_BUILDING_NORMAL"));
break;
}
}
// Set Map Bird View
function Map_BirdView()
{
var ctrlman = m_Map.GetCtrlMan()
var ctrlstate = ctrlman.GetControlState()
var v = ctrlstate.GetRotate()
/* if (v._X != 0) {
v._X = 0;
} else {
v._X = -60;
}
*/ if (v.GetX() != 0) {
v.SetX(0);
} else {
v.SetX(-60);
}
ctrlstate.SetRotate(v)
}
// 맵 글씨 표시
function ViewText()
{
var mapman = m_Map.GetCtrlMan().GetMapMan();
if (mapman.GetVisible() == 5) {
mapman.SetVisible(7);
} else if (mapman.GetVisible() == 7) {
mapman.SetVisible(5);
}
}
// 클립보드에 지도 이미지 복사
function CopyToClipboard()
{
m_Map.CopyToClipboard();
}
// 이미지 저장
function SaveImage()
{
var util = m_Map.GetUtility();
var filename = util.SaveImageDialog("C:\\", "MapImage.png");
var result = m_Map.SaveImage(filename);
//if (!result) alert("이미지 저장에 실패하였습니다");
}
// Draw LayerPolygon
function DrawPolygon()
{
var ctrlMan = m_Map.GetCtrlMan();
var layerMan = ctrlMan.GetLayerMan();
var util = m_Map.GetUtility();
var style = layerMan.NewStyle(-1);
style.SetPen(util.RGBColor(0, 0, 255), 2, util.GetConstToValue("PS_SOLID"));
style.SetBrush(util.RGBAColor(0, 0, 255, 100), util.GetConstToValue("BS_SOLID"));
var obj = layerMan.NewPolygon(1, -1);
obj.SetStyle(style);
obj.SetClosed(1);
obj.SetCanClick(1);
obj.SetCanFocus(1);
obj.SetStateModeNew();
}
// Draw LayerPolyline
function DrawPolyline()
{
var ctrlMan = m_Map.GetCtrlMan();
var layerMan = ctrlMan.GetLayerMan();
var util = m_Map.GetUtility();
var style = layerMan.NewStyle(-1);
style.SetPen(util.RGBColor(0, 0, 255), 2, util.GetConstToValue("PS_DOT"));
var obj = layerMan.NewPolygon(1, -1);
obj.SetStyle(style);
obj.SetClosed(0);
obj.SetCanClick(1);
obj.SetCanFocus(1);
obj.SetStateModeNew();
}
// Lyaer Object 삭제
function RemovePolygon()
{
var ctrlMan = m_Map.GetCtrlMan();
var layerMan = ctrlMan.GetLayerMan();
var layer = layerMan.FindLayer(1);
if (layer) {
layer.ClearObject();
}
}
// 면적 구하기
function CheckArea()
{
var ctrlMan = m_Map.GetCtrlMan();
var layerMan = ctrlMan.GetLayerMan();
var util = m_Map.GetUtility();
var style = layerMan.NewStyle(-1);
style.SetPen(util.RGBColor(0, 0, 255), 2, util.GetConstToValue("PS_SOLID"));
style.SetBrush(util.RGBAColor(0, 0, 255, 100), util.GetConstToValue("BS_SOLID"));
var obj = layerMan.NewPolygon(2, -1);
obj.SetStyle(style);
obj.SetClosed(1);
obj.SetShowDistance(0);
obj.SetShowArea(1);
obj.SetCanClick(1);
obj.SetCanFocus(1);
obj.SetStateModeNew();
}
// 거리 구하기
function CheckDistance()
{
var ctrlMan = m_Map.GetCtrlMan();
var layerMan = ctrlMan.GetLayerMan();
var util = m_Map.GetUtility();
var style = layerMan.NewStyle(-1);
style.SetPen(util.RGBColor(0, 0, 255), 2, util.GetConstToValue("PS_SOLID"));
var obj = layerMan.NewPolygon(2, -1);
obj.SetStyle(style);
obj.SetClosed(0);
obj.SetShowDistance(1);
obj.SetShowArea(0);
obj.SetCanClick(1);
obj.SetCanFocus(1);
obj.SetStateModeNew();
}
// 면전,거리 object 삭제
function DelDistance()
{
var ctrlMan = m_Map.GetCtrlMan();
var layerMan = ctrlMan.GetLayerMan();
var layer = layerMan.FindLayer(2);
if (layer) {
layer.ClearObject();
}
}
// Object 객체 편집
function ObjectModify()
{
var ctrlman = m_Map.GetCtrlMan();
var layerman = ctrlman.GetLayerMan();
var util = m_Map.GetUtility();
var baseman = layerman.CastToBaseManager();
if (baseman.GetManMode() == util.GetConstToValue("TMMAN_MODE_EDIT")) {
baseman.SetManMode(util.GetConstToValue("TMMAN_MODE_NONE"));
} else {
baseman.SetManMode(util.GetConstToValue("TMMAN_MODE_EDIT"));
}
}
// Show Theme Form
function ShowThemeForm()
{
//alert("ShowTheme()");
var ctrlman = m_Map.GetCtrlMan();
var thememan = ctrlman.GetThemeMan();
thememan.ShowForm();
}
// Set Map Level
function Map_SetLevel(level) {
if (level < minLogicalLevel) return;
if (level > maxLogicalLevel) return;
var ctrlman = m_Map.GetCtrlMan();
var ctrlstate = ctrlman.GetControlState();
ctrlstate.SetLevel(level);
}
// Map ToolBar 만들기 Style 1
var panel;
function CreateToolBarUI()
{
if (gCreateToolBarStyle1 == true) {
panel.DestroyUIObj();
gCreateToolBarStyle1 = false;
return;
}
else gCreateToolBarStyle1 = true;
var ctrlman = m_Map.GetCtrlMan();
var uiman = ctrlman.GetUIMan();
var ctrlstate = ctrlman.GetControlState();
var dpsize = ctrlstate.GetSizeDP();
var util = m_Map.GetUtility();
var imageman = ctrlman.GetImageMan();
imageman.SetDefaultPath("http://www.talmap.co.kr/tutorial/image/level_icon");
var width_px = dpsize._CX/2 - 300;
panel = uiman.CreateUI_Panel(uiman);
panel.SetParent(uiman);
panel.SetUIID(100);
panel.SetAlpha(80);
panel.SetBound(width_px, dpsize._CY-100, 530, 35);
panel.SetCanDrag(1);
panel.AddEventMode(util.GetConstToValue("TMEVENTTYPE_MOUSELEAVE") |
util.GetConstToValue("TMEVENTTYPE_MOUSEENTER"));
width_px = 0;
var UIID = 101;
var MyTooBar1 = new Array(21);
for(var i = 0; i < MyTooBar1.length; i++)
{
MyTooBar1[i] = uiman.CreateUI_Button(uiman);
MyTooBar1[i].SetParent(panel);
MyTooBar1[i].SetUIID(UIID);
MyTooBar1[i].SetImageList("map_btn_"+i+".png", 21, 21);
MyTooBar1[i].SetBound(width_px, 5, 21, 21);
MyTooBar1[i].SetAlpha(0);
MyTooBar1[i].SetCanClick(1);
MyTooBar1[i].SetCanDrag(1);
MyTooBar1[i].SetDragTracker(1);
MyTooBar1[i].AddEventMode(util.GetConstToValue("TMEVENTTYPE_MOUSEUP") |
util.GetConstToValue("TMEVENTTYPE_MOUSELEAVE") |
util.GetConstToValue("TMEVENTTYPE_MOUSEENTER"));
width_px = width_px + 25;
UIID++;
}
}
// Map ToolBar 만들기 Style 2
var MyToolBar2 = new Array(22);
function CreateToolBarUI2()
{
if (gCreateToolBarStyle2 == true)
{
for(var i = 0; i < MyToolBar2.length; i++)
{
MyToolBar2[i].DestroyUIObj();
}
gCreateToolBarStyle2 = false;
return;
}
else gCreateToolBarStyle2 = true;
var ctrlman = m_Map.GetCtrlMan();
var uiman = ctrlman.GetUIMan();
var ctrlstate = ctrlman.GetControlState();
var dpsize = ctrlstate.GetSizeDP();
var util = m_Map.GetUtility();
var imageman = ctrlman.GetImageMan();
imageman.SetDefaultPath("http://www.talmap.co.kr/tutorial/image/level_ico");
var width_px = dpsize._CX/2 - 300;
var UIID = 200;
for (var i = 0; i < MyToolBar2.length; i++)
{
MyToolBar2[i] = uiman.CreateUI_Button(uiman);
MyToolBar2[i].SetParent(uiman);
MyToolBar2[i].SetUIID(UIID + i);
MyToolBar2[i].SetImageList("map_btn_"+i+".png", 21, 21);
MyToolBar2[i].SetBound(width_px, dpsize._CY-50, 21, 21);
MyToolBar2[i].SetAlpha(80);
MyToolBar2[i].SetCanClick(1);
MyToolBar2[i].SetCanDrag(1);
MyToolBar2[i].SetImageAutoChange(0);
MyToolBar2[i].SetItemIndex(3);
MyToolBar2[i].AddEventMode(util.GetConstToValue("TMEVENTTYPE_MOUSEUP") |
util.GetConstToValue("TMEVENTTYPE_MOUSEDOWN") |
util.GetConstToValue("TMEVENTTYPE_MOUSELEAVE") |
util.GetConstToValue("TMEVENTTYPE_MOUSEENTER"));
width_px = width_px + 25;
}
}
// OnUI_MouseUp Event Function
function MapEvent_UI_MouseUp(XUIObj, Code, Value1, Value2)
{
if (XUIObj.GetParent().GetUIID() == 11) {
switch (XUIObj.GetUIID()) {
case 12: Map_ZoomOut(); break;
case 13: Map_ZoomIn(); break;
case 14: Map_SetLevel(12);break;
case 15: Map_SetLevel(11);break;
case 16: Map_SetLevel(10);break;
case 17: Map_SetLevel(9);break;
case 18: Map_SetLevel(8);break;
case 19: Map_SetLevel(7);break;
case 20: Map_SetLevel(6);break;
case 21: Map_SetLevel(5);break;
case 22: Map_SetLevel(4);break;
case 23: Map_SetLevel(3);break;
case 24: Map_SetLevel(2);break;
case 25: Map_SetLevel(1);break;
case 26: Map_SetLevel(0);break;
}
var ctrlman = m_Map.GetCtrlMan();
var ctrlstate = ctrlman.GetControlState();
} else if (XUIObj.GetParent().GetUIID() == 100) {
switch (XUIObj.GetUIID()) {
case 101 : Map_ZoomIn(); break;
case 102 : Map_ZoomOut(); break;
case 103 : Map_Rotate(); break;
case 104 : HistoryPrev(); break;
case 105 : HistoryNext(); break;
case 106 : Map_BirdView(); break;
case 107 : break;
case 108 : ViewText(); break;
case 109 : break;
case 110 : break;
case 111 : break;
case 112 : break;
case 113 : break;
case 114 : break;
case 115 : break;
case 116 : break;
case 117 : break;
case 118 : break;
case 119 : break;
case 120 : break;
case 121 : ShowThemeForm(); break;
}
} else {
var UIID = XUIObj.GetUIID();
switch (UIID) {
case 201 : Map_ZoomIn(); break;
case 202 : Map_ZoomOut(); break;
case 203 : Map_Rotate(); break;
case 204 : HistoryPrev(); break;
case 205 : HistoryNext(); break;
case 206 : Map_BirdView();break;
case 207 : break;
case 208 : ViewText(); break;
case 209 : break;
case 210 : break;
case 211 : break;
case 212 : break;
case 213 : break;
case 214 : break;
case 215 : break;
case 216 : break;
case 217 : break;
case 218 : break;
case 219 : break;
case 220 : break;
case 221 : ShowThemeForm(); break;
}
MyToolBar2[UIID-200].SetItemIndex(3);
}
}
// OnUI_MouseDown Event Function
function MapEvent_UI_MouseDown(XUIObj, Code, Value1, Value2)
{
if (XUIObj.GetUIID() > 200) { // Map Tool Bar
MyToolBar2[XUIObj.GetUIID() - 200].SetItemIndex(1);
}
}
// OnUI_Click Event Function
function MapEvent_UI_Click(XUIObj, Code, Value1, Value2)
{
}
// OnUI_MouseLeave Event Function
function MapEvent_UI_MouseLeave(XUIObj, Code, Value1, Value2)
{
// Level Bar
if (XUIObj.GetUIID() == 11) { // Level Bar BG
XUIObj.SetAlpha(80);
}
if (XUIObj.GetParent().GetUIID() == 11) {
XUIObj.GetParent().SetAlpha(80);
}
// ToolBar Style 1
if (XUIObj.GetUIID() == 100) {
XUIObj.SetAlpha(80);
}
if (XUIObj.GetParent().GetUIID() == 100) {
XUIObj.GetParent().SetAlpha(80);
}
// ToolBar Style 2
if (XUIObj.GetUIID() > 200) {
XUIObj.SetAlpha(80);
}
}
// OnUI_MouseHover Event Function
function MapEvent_UI_MouseHover(XUIObj, Code, Value1, Value2)
{
// Level Bar
if (XUIObj.GetUIID() == 11) { // Level Bar BG
XUIObj.SetAlpha(0);
}
if (XUIObj.GetParent().GetUIID() == 11) {
XUIObj.GetParent().SetAlpha(0);
}
// ToolBar Style 1
if (XUIObj.GetUIID() == 100) {
XUIObj.SetAlpha(0);
}
if (XUIObj.GetParent().GetUIID() == 100) {
XUIObj.GetParent().SetAlpha(0);
}
// ToolBar Style 2
if (XUIObj.GetUIID() > 200) {
XUIObj.SetAlpha(0);
}
}
// On_StateChange Event Function
function MapEvent_OnStateChange(Code, Value1, Value2)
{
var util = m_Map.GetUtility();
var ctrlman = m_Map.GetCtrlMan();
var ctrlstate = ctrlman.GetControlState();
if (Code == util.GetConstToValue("TMCHECKCONFIG_LEVEL")) {
//ChangeLevelButtonImage();
// 현재 Level 표출
MapLevel_Master(ctrlstate.GetLevel());
} else if (Code == util.GetConstToValue("TMCHECKCONFIG_ROTATION")) {
} else {
}
}
-->
</script>
<script language="javascript" for="m_Map" event="OnCreate(Flag)">
<!--
MapEvent_OnCreate(Flag);
-->
</script>
<script language="javascript" for="m_Map" event="OnStateChange(Code, Value1, Value2)">
<!--
MapEvent_OnStateChange(Code, Value1, Value2);
-->
</script>
<script language="javascript" for="m_Map" event="OnUI_MouseUp(XUIObj, Code, Value1, Value2)">
<!--
MapEvent_UI_MouseUp(XUIObj, Code, Value1, Value2);
-->
</script>
<script language="javascript" for="m_Map" event="OnUI_MouseDown(XUIObj, Code, Value1, Value2)">
<!--
MapEvent_UI_MouseDown(XUIObj, Code, Value1, Value2);
-->
</script>
<script language="javascript" for="m_Map" event="OnUI_Click(XUIObj, Code, Value1, Value2)">
<!--
MapEvent_UI_Click(XUIObj, Code, Value1, Value2);
-->
</script>
<script language="javascript" for="m_Map" event="OnUI_MouseLeave(XUIObj, Code, Value1, Value2)">
<!--
MapEvent_UI_MouseLeave(XUIObj, Code, Value1, Value2)
-->
</script>
<script language="javascript" for="m_Map" event="OnUI_MouseHover(XUIObj, Code, Value1, Value2)">
<!--
MapEvent_UI_MouseHover(XUIObj, Code, Value1, Value2);
-->
</script>
</head>
<body>
<table>
<tr>
<td>
<OBJECT ID="Map" CLASSID="CLSID:DD9B48AD-EDDC-4D2C-BD68-D1FB4B382024"
codebase='http://localhost/TalMapX_Web.CAB#version=1,0,0,17' width=100% height=80%>
</OBJECT>
</td>
</tr>
</table>
</body>
</html>
|
|
|
#include "talmapxctrl1.h"
#include "CXCtrlMan.h"
#include "CXControlState.h"
#include "CXMasterControlState.h"
#include "CXThemeMan.h"
#include "CXMapMan.h"
#include "CXUtility.h"
#include "CXSize.h"
#include "CXImageMan.h"
#include "CXUIMan.h"
#include "CXUIPanel.h"
#include "CXUIButton.h"
#include "CXUIObj.h"
BEGIN_EVENTSINK_MAP(CSampleDlg, CDialog)
ON_EVENT(CSampleDlg, IDC_TALMAPXCTRL1, 8, CSampleDlg::OnStateChangeTalmapxctrl1, VTS_I4 VTS_I4 VTS_I4)
ON_EVENT(CSampleDlg, IDC_TALMAPXCTRL1, 20, CSampleDlg::OnUI_MouseDownTalmapxctrl1, VTS_DISPATCH VTS_I4 VTS_I4 VTS_I4)
ON_EVENT(CSampleDlg, IDC_TALMAPXCTRL1, 21, CSampleDlg::OnUI_MouseUpTalmapxctrl1, VTS_DISPATCH VTS_I4 VTS_I4 VTS_I4)
ON_EVENT(CSampleDlg, IDC_TALMAPXCTRL1, 24, CSampleDlg::OnUI_MouseHoverTalmapxctrl1, VTS_DISPATCH)
ON_EVENT(CSampleDlg, IDC_TALMAPXCTRL1, 25, CSampleDlg::OnUI_MouseLeaveTalmapxctrl1, VTS_DISPATCH)
END_EVENTSINK_MAP()
// toggle level bar
void CSampleDlg::ToggleLevelBar()
{
CXCtrlMan ctrlman = m_Map.GetCtrlMan();
CXUIMan uiman = ctrlman.GetUIMan();
if (uiman.GetShowLevelBar() == 0) {
uiman.SetShowLevelBar(1);
} else {
uiman.SetShowLevelBar(0);
}
}
// UI 생성
void CSampleDlg::CreateLevelBar2()
{
if (bCreateLevelBar == true) {
bLevelBarBg.DestroyUIObj();
for (int i = 0; i < 14; i++) {
bLevel[i].DestroyUIObj();
}
bCreateLevelBar = false;
return;
}
bCreateLevelBar = true;
CXCtrlMan ctrlman = m_Map.GetCtrlMan();
CXUIMan uiman = ctrlman.GetControlState();
CXMasterControlState ctrlstate = ctrlman.GetControlState();
CXSize dpsize = ctrlstate.GetSizeDP();
CXUtility util= m_Map.GetUtility();
CXImageMan imageman = ctrlman.GetImageMan();
imageman.SetDefaultPath(_T("http://www.talmap.co.kr/tutorial/image/level_ico"));
// BackGround Image
CXUIButton bg = bLevelBarBg = uiman.CreateUI_Button(uiman);
bg.SetParent(uiman);
bg.SetUIID(101);
bg.SetImageList(_T("level_bg.png"), 26, 167);
bg.SetBound(dpsize.GetCX()-37, 127, 27, 167);
bg.SetAlpha(80);
bg.SetCanClick(0);
bg.SetCanDrag(1);
bg.AddEventMode(util.GetConstToValue(_T("TMEVENTTYPE_MOUSELEVEL"))|
util.GetConstToValue(_T("TMEVENTTYPE_MOUSEENTER")));
// Zoom In Button
CXUIButton btnZoomIn = uiman.CreateUI_Button(uiman);
btnZoomIn.SetParent(bg);
btnZoomIn.SetUIID(102);
btnZoomIn.SetImageList(_T("level_btn_minus.png"), 16, 20);
btnZoomIn.SetBound(11, 0, 16, 20);
btnZoomIn.SetCanClick(1);
btnZoomIn.SetCanDrag(1);
btnZoomIn.SetDragTracker(1);
btnZoomIn.AddEventMode(util.GetConstToValue(_T("TMEVENTTYPE_MOUSEUP"))|
util.GetConstToValue(_T("TMEVENTTYPE_MOUSELEVE"))|
util.GetConstToValue(_T("TMEVENTTYPE_MOUSEENTER")));
// Zoom Out Button
CXUIButton btnZoomOut = uiman.CreateUI_Button(uiman);
btnZoomOut.SetParent(bg);
btnZoomOut.SetUIID(103);
btnZoomOut.SetImageList(_T("level_btn_plus.png"), 16, 20);
btnZoomOut.SetBound(11, bg.GetItemHeight()-20, 16, 20);
btnZoomOut.SetCanClick(1);
btnZoomOut.SetCanDrag(1);
btnZoomOut.SetDragTracker(1);
btnZoomOut.AddEventMode(util.GetConstToValue(_T("TMEVNETTYPE_MOUSEUP"))|
util.GetConstToValue(_T("TMEVENTTYPE_MOUSELEAVE"))|
util.GetConstToValue(_T("TMEVENTTYPE_MOUSEENTER")));
// Level Button
long UIID = 104;
long CY = btnZoomIn.GetHeight() + 5;
for (int i=13; i > -1; i--) {
bLevel[i] = uiman.CreateUI_Button(uiman);
bLevel[i].SetParent(bg);
bLevel[i].SetImageList(_T("level_btn_position.png"), 16, 9);
bLevel[i].SetBound(11, CY, 22, 9);
bLevel[i].SetCanClick(1);
bLevel[i].SetCanDrag(1);
bLevel[i].SetDragTracker(1);
bLevel[i].SetImageAutoChange(0);
bLevel[i].SetItemIndex(1);
bLevel[i].AddEventMode(util.GetConstToValue(_T("TMEVENTTYPE_MOUSEUP"))|
util.GetConstToValue(_T("TMEVENTTYPE_MOUSELEVE"))|
util.GetConstToValue(_T("TMEVENTTYPE_MOUSEENTER")));
CY = CY + 9;
UIID++;
}
// 현재 레벨 표출
MapLevel_Master(ctrlstate.GetLevel());
}
// 현재 레벨 표출
void CSampleDlg::MapLevel_Master(long level)
{
if(mLevelBarBg == NULL) return;
// Image Index 설정 0~3
int SetEnabled = 0;
int SetDisable = 1;
for (int i=0; i < 13; i++) {
if (level == i) btnLevle[i].SetItemIndex(SetEnabled);
else btnLevle[i].SetItemIndex(SetDisable);
}
}
// Zoom In
void CSampleDlg::Map_ZoomIn()
{
CXCtrlMan ctrlman = m_Map.GetCtrlMan();
CXMasterControlState ctrlstate = ctrlman.GetControlState();
if (ctrlstate.GetLevel() > minLogicalLevel) {
ctrlstate.SetLevel(ctrlstate.GetLevel() -1);
}
}
// Zoom Out
void CSampleDlg::Map_ZoomOut()
{
CXCtrlMan ctrlman = m_Map.GetCtrlMan();
CXMasterControlState ctrlstate = ctrlman.GetControlState();
if (ctrlstate.GetLevel() < maxLogicalLevel) {
ctrlstate.SetLevel(ctrlstate.GetLevel() -1);
}
}
// Map ToolBar 만들기 Style1
void CSampleDlg::CreateToolBarUI()
{
if (bCreateToolBarStyle1 == true) {
bPanel.DestroyUIObj();
bCreateToolBarStyle1 = false;
return;
} else
bCreateToolBarStyle1 = true;
CXCtrlMan ctrlman = m_Map.GetCtrlMan();
CXUIMan uiman = ctrlman.GetUIMan();
CXMasterControlState ctrlstate = ctrlman.GetControlState();
CXSize dpsize = ctrlstate.GetSizeDP();
CXUtility util = m_Map.GetUtility();
CXImageMan imageman = ctrlman.GetImageMan();
imageman.SetDefaultPath(_T("C:\\Program Files\\TalMapX SDK\\Theme\\image\\level_icon"));
long width_px = dpsize.GetCX()/2 - 300;
bPanel = uiman.CreateUI_Panel(uiman);
bPanel.SetParent(uiman);
bPanel.SetUIID(200);
bPanel.SetAlpha(80);
bPanel.SetBound(width_px, dpsize.GetCY()-100, 530, 35);
bPanel.SetCanDrag(1);
bPanel.AddEventMode(util.GetConstToValue(_T("TMEVENTTYPE_MOUSELEAVE"))|
util.GetConstToValue(_T("TMEVENTTYPE_MOUSEENTER")));
width_px = 0;
long UIID = 201;
CXUIButton MyToolBar1[21];
for (int i=0; i< 22; i++) {
MyToolBar1[i] = uiman.CreateUI_Button(uiman);
MyToolBar1[i].SetParent(bPanel);
MyToolBar1[i].SetUIID(UIID);
CString url;
url.Format(_T("map_btn_%d.png"), i);
MyToolBar1[i].SetImageList(url, 21, 21);
MyToolBar1[i].SetBound(width_px, 5, 21, 21);
MyToolBar1[i].SetAlpha(0);
MyToolBar1[i].SetCanClick(1);
MyToolBar1[i].SetCanDrag(1);
MyToolBar1[i].SetDragTracker(1);
MyToolBar1[i].AddEventMode(util.GetConstToValue(_T("TMEVENTTYPE_MOUSEUP"))|
util.GetConstToValue(_T("TMEVENTTYPE_MOUSELEAVE"))|
util.GetConstToValue(_T("TMEVNETTYPE_MOUSEENTER")));
width_px = width_px + 25;
UIID++;
}
}
// Map ToolBar 만들기 Style 2
void CSampleDlg::CreateToolBarUI2()
{
if (bCreateToolBarStyle2 == true) {
for (int i=0; i < 23; i++) {
MyToolBar2[i].DestroyUIObj();
}
bCreateToolBarStyle2 = false;
return;
} else
bCreateToolBarStyle2 = true;
CXCtrlMan ctrlman = m_Map.GetCtrlMan();
CXUIMan uiman = ctrlman.GetUIMan();
CXMasterControlState ctrlstate = ctrlman.GetControlState();
CXSize dpsize = ctrlstate.GetSizeDP();
CXUtility util = m_Map.GetUtility();
CXImageMan imageman = ctrlman.GetImageMan();
imageman.SetDefaultPath(_T("C:\\Program Files\\TalMapX SDK\\Theme\\image\\level_icon"));
long width_px = 0;
long UIID = 300;
for (int i=0; i< 22; i++) {
MyToolBar2[i] = uiman.CreateUI_Button(uiman);
MyToolBar2[i].SetParent(bPanel);
MyToolBar2[i].SetUIID(UIID+i);
CString url;
url.Format(_T("map_btn_%d.png"), i);
MyToolBar2[i].SetImageList(url, 21, 21);
MyToolBar2[i].SetBound(width_px, dpsize.GetCY()-50, 21, 21);
MyToolBar2[i].SetAlpha(80);
MyToolBar2[i].SetCanClick(1);
MyToolBar2[i].SetCanDrag(1);
MyToolBar2[i].SetDragTracker(1);
MyToolBar2[i].SetImageAutoChange(0);
MyToolBar2[i].SetItemIndex(3);
MyToolBar2[i].AddEventMode(util.GetConstToValue(_T("TMEVENTTYPE_MOUSEUP"))|
util.GetConstToValue(_T("TMEVNETTYPE_MOUSEDOWN"))|
util.GetConstToValue(_T("TMEVENTTYPE_MOUSELEAVE"))|
util.GetConstToValue(_T("TMEVNETTYPE_MOUSEENTER")));
width_px = width_px + 25;
}
}
// OnUI_MouseHover Event
void CSampleDlg::OnUI_MouseHoverTalmapxctrl1(LPDISPATCH Obj)
{
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
CXUIObj UIObj;
UIObj.AttachDispatch(Obj, FALSE);
// ToolBar Style1
if (UIObj.GetUIID() == 200) {
UIObj.SetAlpha(0);
}
CXUIObj pobj = UIObj.GetParent();
if (pobj.GetUIID() == 200) {
pobj.SetAlpha(0);
}
// ToolBar Style2
if (UIObj.GetUIID() > 300) {
UIObj.SetAlpha(0);
}
}
// OnUI_MouseLeave Event
void CSampleDlg::OnUI_MouseLeaveTalmapxctrl1(LPDISPATCH Obj)
{
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
CXUIObj UIObj;
UIObj.AttachDispatch(Obj, FALSE);
// ToolBar Style1
if (UIObj.GetUIID() == 200) {
UIObj.SetAlpha(80);
}
CXUIObj pobj = UIObj.GetParent();
if (pobj.GetUIID() == 200) {
pobj.SetAlpha(80);
}
// ToolBar Style2
if (UIObj.GetUIID() > 300) {
UIObj.SetAlpha(80);
}
}
// OnUI_MouseUp Event
void CSampleDlg::OnUI_MouseUpTalmapxctrl1(LPDISPATCH Obj, long Flag, long X, long Y)
{
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
CXUIObj UIObj;
UIObj.AttachDispatch(Obj, FALSE);
CXUIObj pObj;
pObj.AttachDispatch(UIObj.GetParent(), FALSE);
if (pObj.GetUIID() == 11) {
switch (UIObj.GetUIID()) {
case 12: Map_ZoomOut(); break;
case 13: Map_ZoomIn(); break;
case 14: MapLevel_Master(12); break;
case 15: MapLevel_Master(11); break;
case 16: MapLevel_Master(10); break;
case 17: MapLevel_Master(9); break;
case 18: MapLevel_Master(8); break;
case 19: MapLevel_Master(7); break;
case 20: MapLevel_Master(6); break;
case 21: MapLevel_Master(5); break;
case 22: MapLevel_Master(4); break;
case 23: MapLevel_Master(3); break;
case 24: MapLevel_Master(2); break;
case 25: MapLevel_Master(1); break;
case 26: MapLevel_Master(0); break;
}
} else if (pObj.GetUIID() == 101) {
switch (UIObj.GetUIID()) {
case 12: Map_ZoomOut(); break;
case 13: Map_ZoomIn(); break;
case 14: MapLevel_Master(12); break;
case 15: MapLevel_Master(11); break;
case 16: MapLevel_Master(10); break;
case 17: MapLevel_Master(9); break;
case 18: MapLevel_Master(8); break;
case 19: MapLevel_Master(7); break;
case 20: MapLevel_Master(6); break;
case 21: MapLevel_Master(5); break;
case 22: MapLevel_Master(4); break;
case 23: MapLevel_Master(3); break;
case 24: MapLevel_Master(2); break;
case 25: MapLevel_Master(1); break;
case 26: MapLevel_Master(0); break;
}
} else if (pObj.GetUIID() == 200) {
switch (UIObj.GetUIID()) {
case 201: Map_ZoomIn(); break;
case 202: Map_ZoomOut(); break;
case 203: OnSmRotation(); break;
case 204: OnSmHistoryprev(); break;
case 205: OnSmHistorynext(); break;
case 206: OnSmBirdview(); break;
case 207: OnSm3Dview(); break;
case 208: break;
case 209: break;
case 210: break;
case 211: break;
case 212: break;
case 213: break;
case 214: break;
case 215: break;
case 216: break;
case 217: break;
case 218: break;
case 219: break;
case 220: break;
case 221: break;
}
} else if (pObj.GetUIID() == 300) {
switch (UIObj.GetUIID()) {
case 201: Map_ZoomIn(); break;
case 202: Map_ZoomOut(); break;
case 203: OnSmRotation(); break;
case 204: OnSmHistoryprev(); break;
case 205: OnSmHistorynext(); break;
case 206: OnSmBirdview(); break;
case 207: OnSm3Dview(); break;
case 208: break;
case 209: break;
case 210: break;
case 211: break;
case 212: break;
case 213: break;
case 214: break;
case 215: break;
case 216: break;
case 217: break;
case 218: break;
case 219: break;
case 220: break;
case 221: break;
}
MyToolBar2[UIObj.GetUIID()-300].SetItemIndex(3);
}
}
// 지도 회전
void CSampleDlg::OnSmRotation()
{
CXControlState ctrlstate = ctrlman.GetControlState();
CXVector vector = ctrlstate.GetRotate();
vector.SetZ(vector.GetZ() + 10);
ctrlstate.SetRotate(vector);
}
// 이전 화면 보기
void CSampleDlg::OnSmHistoryprev()
{
CXCtrlMan ctrlman = m_Map.GetCtrlMan();
CXMasterControlState ctrlstate = ctrlman.GetControlState();
ctrlstate.HistoryPrev();
}
// 다음 화면 보기
void CSampleDlg::OnSmHistorynext()
{
CXCtrlMan ctrlman = m_Map.GetCtrlMan();
CXMasterControlState ctrlstate = ctrlman.GetControlState();
ctrlstate.HistoryNext();
}
// Bird View
void CSampleDlg::OnSmBirdview()
{
CXControlState ctrlstate = ctrlman.GetControlState();
CXVector vector = ctrlstate.GetRotate();
if (vector.GetX() != 0) {
vector.SetX(0);
} else {
vector.SetX(-60);
}
ctrlstate.SetRotate(vector);
}
// 3D 보기
void CSampleDlg::OnSm3Dview()
{
CXUtility util = m_Map.GetUtility();
CXControlState ctrlstate = ctrlman.GetControlState();
switch(ctrlstate.GetState(util.GetConstToValue(_T("TMCTRLSTATE_DISPLAY_BUILDING")))) {
case 1 : ctrlstate.SetState(util.GetConstToValue(_T("TMCTRLSTATE_DISPLAY_BUILDING")),
util.GetConstToValue(_T("TMCTRLSTATE_CODE_BUILDING_3D_1"))); break;
case 11 : ctrlstate.SetState(util.GetConstToValue(_T("TMCTRLSTATE_DISPLAY_BUILDING")),
util.GetConstToValue(_T("TMCTRLSTATE_CODE_BUILDING_3D_2"))); break;
case 12 : ctrlstate.SetState(util.GetConstToValue(_T("TMCTRLSTATE_DISPLAY_BUILDING")),
util.GetConstToValue(_T("TMCTRLSTATE_CODE_BUILDING_NORMAL"))); break;
}
}
|
|
|
|
See Also
|
|
Map Preview
|
|