| |
|
|
function MapEvent_OnPOIUIClick(XPOIItem, Flag, X, Y, Panel)
{
if (!XPOIItem) return;
if (!Panel) return;
switch (Panel.GetUIID()) {
case 1: alert("정보 박스의 Caption을 클릭했습니다!!"); break;
case 2: alert("정보 박스를 클릭했습니다!!"); break;
case 3: // 상세 정보
{
var lonlat = XPOIItem.GetLonLat();
alert("경도: " + lonlat.X + ", 위도: " + lonlat.Y);
}
break;
case 4: // 메뉴
{
var ctrlman = m_Map.GetCtrlMan();
var ctrlstate = ctrlman.GetControlState();
var uiman = ctrlman.GetUIMan();
var size = ctrlstate.GetSizeDP();
var lonlat = XPOIItem.GetLonLat();
var menu = m_Map.GetApplication().GetPopupMenu();
menu.Create();
menu.AppendString(1, "1번 메뉴", "", "", 1);
menu.AppendString(2, "2번 메뉴", "", "", 2);
menu.AppendString(3, "3번 메뉴", "", "", 3);
menu.AppendString(4, "4번 메뉴", "", "", 4);
menu.AppendString(5, "5번 메뉴", "", "", 5);
var pos = Panel.ClientToScreen(X, Y);
var item = menu.TrackPopupMenu(0, pos.X, pos.Y);
if (item) {
switch (item.GetID()) {
case 1: alert("1번 메뉴를 클릭하였습니다."); break;
case 2: alert("2번 메뉴를 클릭하였습니다."); break;
case 3: alert("3번 메뉴를 클릭하였습니다."); break;
case 4: alert("4번 메뉴를 클릭하였습니다."); break;
case 5: alert("5번 메뉴를 클릭하였습니다."); break;
default: alert("유효하지 않은 작업입니다.!!"); break;
}
}
}
break;
case 5:
{
XPOIItem.DestroyInfoBox();
}
break;
default:
alert("유효하지 않은 ID입니다!!");
}
}
|
|
|
|
#include "CXCtrlMan.h"
#include "CXPOIItem.h"
#include "CXUIObj.h"
#include "CXUIMan.h"
#include "CXControlState.h"
#include "CXSize.h"
#include "CXPoint.h"
#include "CXApplication.h"
#include "CXPopupMenu.h"
#include "CXPopupMenuItem.h"
void CSampleDlg::OnPOIUIClickTalmapxctrl1(LPDISPATCH POI, long nFlag, long X, long Y, LPDISPATCH Obj)
{
CXPOIItem poi;
poi.AttachDispatch(POI, FALSE);
CXUIObj object;
object.AttachDispatch(Obj, FALSE);
if (poi.m_lpDispatch == NULL) return;
if (object.m_lpDispatch == NULL) return;
switch(object.GetUIID())
{
case 1: MessageBox(_T("정보박스의 Caption을 클릭했습니다."), _T("확인"));break;
case 2: MessageBox(_T("정보박스를 클릭했습니다."), _T("확인")); break;
case 3: {
CXPoint point = poi.GetLonLat();
CString msg ;
msg.Format(_T("경도 : %d, 위도 : %d"), point.GetX(), point.GetY());
MessageBox(msg, _T("확인"));
} break;
case 4: {
CXUIMan uiman = ctrlman.GetUIMan();
CXControlState ctrlstate = ctrlman.GetControlState();
CXSize size = ctrlstate.GetSizeDP();
CXPoint point = poi.GetLonLat();
CXApplication app = m_Map.GetApplication();
CXPopupMenu menu = app.GetPopupMenu();
menu.Create();
menu.AppendString(1, _T("1번 메뉴"), _T(""),_T(""), 1);
menu.AppendString(2, _T("2번 메뉴"), _T(""), _T(""), 2);
menu.AppendString(3, _T("3번 메뉴"), _T(""), _T(""), 3);
menu.AppendString(4, _T("4번 메뉴"), _T(""), _T(""), 4);
menu.AppendString(5, _T("5번 메뉴"), _T(""), _T(""), 5);
CXPoint pos = object.ClientToScreen(X, Y);
CXPopupMenuItem item = menu.TrackPopupMenu(0, pos.GetX(), pos.GetY());
if (item.m_lpDispatch != NULL) {
switch (item.GetID())
{
case 1: MessageBox(_T("1번 메뉴를 클릭하였습니다."), _T("확인")); break;
case 2: MessageBox(_T("2번 메뉴를 클릭하였습니다."), _T("확인")); break;
case 3: MessageBox(_T("3번 메뉴를 클릭하였습니다."), _T("확인")); break;
case 4: MessageBox(_T("4번 메뉴를 클릭하였습니다."), _T("확인")); break;
case 5: MessageBox(_T("5번 메뉴를 클릭하였습니다."), _T("확인")); break;
}
}
}break;
case 5: poi.DestroyInfoBox(); break;
}
}
|
|