| |
|
|
<html>
<head>
<script language="javascript">
<!--
// POI생성
function POIMaking(GroupID)
{
var ctrlman = m_Map.GetCtrlMan();
var ctrlstate = ctrlman.GetControlState();
var util = m_Map.GetUtility();
var itemCount = 3;
var posLL = ctrlstate.GetLLCenter(); // 지도의 중심 좌표
// Step 1. Get POI Manger
var poiman = ctrlman.GetPOIMan();
var baseman = poiman.CastToBaseManager();
// Step 2. Make POI Group
var group = poiman.FindGroup(GroupID);
if (!group) group = poiman.NewGroup(GroupID);
// Step 2-1. Make POI Style
var gstyle = poiman.FindStyle(1);
if (!gstyle) {
gstyle = poiman.NewStyle(1); // -1: 아이디 자동 생성
gstyle.SetGDIFont("굴림", 0, 8);
gstyle.SetFontColor(util.RGBColor(255, 0, 0));
gstyle.SetFontOutColor(util.RGBColor(255, 255, 255));
gstyle.SetBrush(util.RGBColor(100, 0, 255), 0);
gstyle.SetPen(util.RGBColor(0, 0, 0), 1, 0);
}
// Group에 Style을 지정하면 하위 Item은 별도의 Style을 가지지 않는 한 Group의 Style을 따르게 된다.
group.SetStyle(gstyle);
var style = poiman.FindStyle(2);
if (!style) {
style = poiman.NewStyle(2);
style.SetGDIFont("굴림", 0, 8);
style.SetFontColor(util.RGBColor(0, 0, 0));
style.SetFontOutColor(util.RGBColor(255, 255, 255));
style.SetBrush(util.RGBColor(100, 0, 255), 0);
style.SetPen(util.RGBColor(0, 0, 0), 1, 0);
}
// Step 3. Make POI Items
var imageman = ctrlman.GetImageMan();
imageman.SetDefaultPath("http://www.talmap.co.kr/tutorial/");
var image = imageman.LoadImageList("CAR_IMAGE", "image/CAR.png", 64, 64);
if (image.IsValid() != true) alert("Image 이상");
var angle = 0;
group.BeginUpdate();
for (i = 0; i < itemCount; i++) {
var item = group.NewItem(-1)
item.SetLonLat(posLL._X + i * 250, posLL._Y - i * 250)
item.SetImage(image);
item.SetShowImage(1)
item.SetImageIndex(1)
item.SetImageOffset(4)
item.SetTextStyle(0x12)
if (i % 2) item.SetStyle(style)
item.SetCaption("[" + i + "]Test POI")
item.SetContents("[" + i + "] Contents\nHello")
item.SetAnimation(200) // 1초 단위
item.SetSyncAngle(1)
item.SetAngle(angle)
item.SetAlpha(100)
angle = angle + 10;
if(angle > 360) angle = 0;
}
group.EndUpdate();
}
// POI 제거
function RemovePOIs()
{
var ctrlman = m_Map.GetCtrlMan();
var poiman = ctrlman.GetPOIMan();
var countOfPOIGroup = poiman.GetGroupCount();
if (countOfPOIGroup > 0) {
alert("POI Group " + countOfPOIGroup + "개를 제거합니다!!");
poiman.ClearGroup();
} else {
alert("제거할 POI가 없습니다!!");
}
}
function MapEvent_OnPOIClick(POI, Flag, X, Y)
{
if (POI) {
var id = POI.GetID();
//alert("ID ["+id + "] POI를 선택했습니다.");
var uipanel = POI.CreateInfoBox(0, POI.GetCaption(), POI.GetContents(), true, true);
}
}
function MapEvent_OnPOIUIClick(XPOIItem, Flag, X, Y, Panel)
{
if (!XPOIItem) return;
if (!Panel) return;
switch (Panel.GetUIID()) {
case -11: alert("정보 박스의 Caption을 클릭했습니다!!"); break;
case -12: alert("정보 박스를 클릭했습니다!!"); break;
case -13: // 상세 정보
{
var lonlat = XPOIItem.GetLonLat();
alert("경도: " + lonlat._X + ", 위도: " + lonlat._Y);
}
break;
case -14: // 메뉴
{
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 -15:
{
XPOIItem.DestroyInfoBox();
}
break;
default:
alert("유효하지 않은 ID입니다!!");
}
}
-->
</script>
<script language="javascript" for="m_Map" event="OnPOI_Click(POI, Flag, X, Y)">
<!--
MapEvent_OnPOIClick(POI, Flag, X, Y);
-->
</script>
<script language="javascript" for="m_Map" event="OnPOI_UIClick(XPOIItem, Flag, X, Y, Panel)">
<!--
MapEvent_OnPOIUIClick(XPOIItem, Flag, X, Y, Panel);
-->
</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 "CXThemeMan.h"
#include "CXMapMan.h"
#include "CXAdminMan.h"
BEGIN_EVENTSINK_MAP(CSampleDlg, CDialog)
ON_EVENT(CSampleDlg, IDC_TALMAPXCTRL1, 43, CSampleDlg::OnPOIClickTalmapxctrl1, VTS_DISPATCH VTS_I4 VTS_I4 VTS_I4)
ON_EVENT(CSampleDlg, IDC_TALMAPXCTRL1, 44, CSampleDlg::OnPOIUIClickTalmapxctrl1, VTS_DISPATCH VTS_I4 VTS_I4 VTS_I4 VTS_DISPATCH)
END_EVENTSINK_MAP()
// POI생성
void CSampleDlg::OnPOIAdd()
{
// 색상값 설정을 위해 GXUtility 객체를 가져온다.
CXUtility util = m_Map.GetUtility();
// 지도중심 좌표값을 구하기 위해 지도의 현재 상태를 가져온다.
CXControlState ctrlstate = ctrlman.GetControlState();
// 지도 중심좌표를 구한다.
CXPoint posLL = ctrlstate.GetLLCenter();
// 1. POI 변수를 초기화 한다.
CXPOIMan poiman = ctrlman.GetPOIMan();
// 2. POI 그룹을 설정 한다.
CXPOIGroup group = poiman.FindGroup(1);
if (group.m_lpDispatch == NULL)
group = poiman.NewGroup(1);
// 3. POI 스타일을 지정한다.
CXPOIStyle style = poiman.FindStyle(1);
if (style.m_lpDispatch == NULL) {
style = poiman.NewStyle(1);
// POI 글씨체 설정
style.SetGDIFont("굴림", 0, 8);
// POI 글씨색상 설정
style.SetFontColor(util.RGBColor(255, 0, 0));
// POI 글씨OutLine색상 설정
style.SetFontOutColor(util.RGBColor(255, 255, 255));
// POI Caption 배경색상 설정
style.SetBrush(util.RGBColor(100, 0, 255), 0);
// POI 글씨굵기 설정
style.SetPen(util.RGBColor(0, 0, 0), 1, 0);
// 4. style을 그룹에 적용한다.
group.SetStyle(style);
}
// 5. POI 이미지 설정을 위해 초기화 한다.
// OnCreate 부분에서 이미지를 미리 로딩 해 두면, POI 생성시 때 마다 로드할 필요가 없습니다.
CXImageMan imageman = ctrlman.GetImageMan();
// 이미지 경로 설정
imageman.SetDefaultPath("http://www.talmap.co.kr/tutorial/");
// 이미지 이름 및 크기 설정
CXMagicImageList image = imageman.LoadImageList("CAR_IMAGE", "image/CAR.png", 64, 64);
// 6. POI 를 초기화 한다.
CXPOIItem poi = group.NewItem(-1); //ID 자동생성.
// POI 좌표값 설정
poi.SetLonLat(posLL.GetX(), posLL.GetY());
// POI 이미지 설정
poi.SetImage(image);
// POI 이미지 표출 유무 1:표출 0:표출안함
poi.SetShowImage(1);
// POI 이미지 Index설정
poi.SetImageIndex(1);
// POI 이미지 위치 설정 (0~8)
poi.SetImageOffset(8);
// POI Text설정
poi.SetTextStyle(0x12);
// POI style설정
poi.SetStyle(style);
// POI 캡션설정
poi.SetCaption("Caption");
// POI Contents설정
poi.SetContents("Contents");
// POI 애니메이션설정 1초단위
poi.SetAnimation(200);
// POI 회전설정
poi.SetSyncAngle(1)
poi.SetAngle(90);
// POI 투명도 설정
poi.SetAlpha(100);
}
// POI 제거
void CSampleDlg::OnPOIDelete()
{
CXPOIMan poiman = ctrlman.GetPOIMan();
CXPOIGroup group = poiman.FindGroup(1);
if (group.m_lpDispatch != NULL) {
poiman.DeleteGroup(1);
}
}
void CSampleDlg::OnPOIClickTalmapxctrl1(LPDISPATCH POI, long nFlag, long X, long Y)
{
CXPOIItem poi = POI;
poi.CreateInfoBox(0, poi.GetCaption(), poi.GetContents(), true, true);
}
void CSampleDlg::OnPOIUIClickTalmapxctrl1(LPDISPATCH POI, long nFlag, long X, long Y, LPDISPATCH Obj)
{
CXPOIItem poi = POI;
CXUIObj object = Obj;
if (poi.m_lpDispatch == NULL) return;
if (object.m_lpDispatch == NULL) return;
switch(object.GetUIID())
{
case -11: MessageBox("정보박스의 Caption을 클릭했습니다.", "확인");break;
case -12: MessageBox("정보박스를 클릭했습니다.", "확인"); break;
case -13: {
CXPoint point = poi.GetLonLat();
CString msg ;
msg.Format("경도 : %d, 위도 : %d", point.GetX(), point.GetY());
MessageBox(msg, "확인");
} break;
case -14: {
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, "1번 메뉴", "", "", 1);
menu.AppendString(2, "2번 메뉴", "", "", 2);
menu.AppendString(3, "3번 메뉴", "", "", 3);
menu.AppendString(4, "4번 메뉴", "", "", 4);
menu.AppendString(5, "5번 메뉴", "", "", 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("1번 메뉴를 클릭하였습니다.", "확인"); break;
case 2: MessageBox("2번 메뉴를 클릭하였습니다.", "확인"); break;
case 3: MessageBox("3번 메뉴를 클릭하였습니다.", "확인"); break;
case 4: MessageBox("4번 메뉴를 클릭하였습니다.", "확인"); break;
case 5: MessageBox("5번 메뉴를 클릭하였습니다.", "확인"); break;
}
}
}break;
case 5: poi.DestroyInfoBox(); break;
}
}
|
|