|
TalMap SDK Libary Reference |
HOWTO: add/delete POI Objects in TalMapX Control. |
|
Summary
|
This document describes how to handle the POI object, a powerful object provided in TalMapX Control.
With this document, users can learn how to create or remove the POI objects.
Users can make, add, or delete POI¡¯s of desired style using the related objects, and also can manage them by groups.
|
|
|
Steps
|
1. Get POI Manager with CtrlMan in TalMapX Control.
2. Make a POI group with the POI Manager. Use NewGroup() method.
3. Set the desired style by making a POI Style Object.
4. Make POI Item in the created group using NewItem() method.
5. Remove POI Items, POI Groups, and the related objects when necessary.
|
|
|
Example
|
|
<html>
<head>
<script language="javascript">
<!--
// Create 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(); // Center Coordinate of the map
// 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: Automatic ID generation
gstyle.SetGDIFont("Tahoma", 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);
}
//// When a Style is applied to a Group, lower level items follow the Style of the Group unless they have their own Styles.
group.SetStyle(gstyle);
var style = poiman.FindStyle(2);
if (!style) {
style = poiman.NewStyle(2);
style.SetGDIFont("Tahoma", 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;
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 sec. unit
item.SetSyncAngle(1)
item.SetAngle(angle)
item.SetAlpha(100)
angle = angle + 10;
if(angle > 360) angle = 0;
}
}
// Remove POI
function RemovePOIs()
{
var ctrlman = m_Map.GetCtrlMan();
var poiman = ctrlman.GetPOIMan();
var countOfPOIGroup = poiman.GetGroupCount();
if (countOfPOIGroup > 0) {
alert(""POI Group " + countOfPOIGroup + "will be removed!!");
poiman.ClearGroup();
} else {
alert("No POI to Remove!!");
}
}
function MapEvent_OnPOIClick(POI, Flag, X, Y)
{
if (POI) {
var id = POI.GetID();
//alert("ID ["+id + "] POI is Selected.");
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("Clicked on Caption in the Information Box!!"); break;
case -12: alert("Clicked on the Information Box!!"); break;
case -13: // Detailed Information
{
var lonlat = XPOIItem.GetLonLat();
alert(Longitude: " + lonlat._X + ", Latitude: " + lonlat._Y);
}
break;
case -14: // Menus
{
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, "Menu 1", "", "", 1);
menu.AppendString(2, "Menu 2", "", "", 2);
menu.AppendString(3, "Menu 3", "", "", 3);
menu.AppendString(4, "Menu 4", "", "", 4);
menu.AppendString(5, "Menu 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("Menu 1 is Clicked."); break;
case 2: alert("Menu 2 is Clicked."); break;
case 3: alert("Menu 3 is Clicked."); break;
case 4: alert("Menu 4 is Clicked."); break;
case 5: alert("Menu 5 is Clicked."); break;
default: alert("Invalid Action!!"); break;
}
}
}
break;
case -15:
{
XPOIItem.DestroyInfoBox();
}
break;
default:
alert("Invalid 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="m_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()
// Make POI
void CSampleDlg::OnPOIAdd()
{
// Get GXUtility Object for Color Setting.
CXUtility util = m_Map.GetUtility();
// Get the Current Status of the Map to Find the Center Coordinate of the m_Map.
CXControlState ctrlstate = ctrlman.GetControlState();
// Find the Center Coordinate of the m_Map.
CXPoint posLL = ctrlstate.GetLLCenter();
// 1. Initialize POI variables.
CXPOIMan poiman = ctrlman.GetPOIMan();
// 2. Set up POI Group.
CXPOIGroup group = poiman.FindGroup(1);
if (group.m_lpDispatch == NULL)
group = poiman.NewGroup(1);
// 3. Set POI Style.
CXPOIStyle style = poiman.FindStyle(1);
if (style.m_lpDispatch == NULL) {
style = poiman.NewStyle(1);
// Set POI Font
style.SetGDIFont("Tahoma", 0, 8);
// Set POI Font Color
style.SetFontColor(util.RGBColor(255, 0, 0));
// Set POI Text OutLine Color
style.SetFontOutColor(util.RGBColor(255, 255, 255));
// Set POI Caption Background Color
style.SetBrush(util.RGBColor(100, 0, 255), 0);
// Set POI Text Thickness
style.SetPen(util.RGBColor(0, 0, 0), 1, 0);
// 4. Set the Style of the Group.
group.SetStyle(style);
}
// 5. Initialize for POI Image Setup.
// Once the image has been loaded in the part of OnCreate, it is not necessary to load the image every time when the POI is made.
CXImageMan imageman = ctrlman.GetImageMan();
// Image Path Setup
imageman.SetDefaultPath("http://www.talmap.co.kr/tutorial/");
// Set Image Name and Size
CXMagicImageList image = imageman.LoadImageList("CAR_IMAGE", "image/CAR.png", 64, 64);
// 6. Initialize POI.
CXPOIItem poi = group.NewItem(-1); // Automatic ID Generation
// Set POI Coordinate
poi.SetLonLat(posLL.GetX(), posLL.GetY());
// Set POI Image
poi.SetImage(image);
// POI Image Showing Mode 1:Show 0:Hide
poi.SetShowImage(1);
// Set POI Image Index
poi.SetImageIndex(1);
// Set POI Image Offset (0~8)
poi.SetImageOffset(8);
// Set POI Text Style
poi.SetTextStyle(0x12);
// Set POI Style
poi.SetStyle(style);
// Set POI Caption
poi.SetCaption("Caption");
// Set POI Contents
poi.SetContents("Contents");
// Set POI Animation 1sec. unit
poi.SetAnimation(200);
// Set POI Angle
poi.SetSyncAngle(1)
poi.SetAngle(90);
// Set POI Transparency
poi.SetAlpha(100);
}
// Remove 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 1: MessageBox("Clicked on Caption in the Information Box.", "OK");break;
case 2: MessageBox("Clicked on the Information Box.", "OK"); break;
case 3: {
CXPoint point = poi.GetLonLat();
CString msg ;
msg.Format("Longitude : %d, Latitude : %d", point.GetX(), point.GetY());
MessageBox(msg, "OK");
} 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, "Menu 1", "", "", 1);
menu.AppendString(2, "Menu 2", "", "", 2);
menu.AppendString(3, "Menu 3", "", "", 3);
menu.AppendString(4, "Menu 4", "", "", 4);
menu.AppendString(5, "Menu 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("Menu 1 is Clicked.", "OK"); break;
case 2: MessageBox("Menu 2 is Clicked.", "OK"); break;
case 3: MessageBox("Menu 3 is Clicked.", "OK"); break;
case 4: MessageBox("Menu 4 is Clicked.", "OK"); break;
case 5: MessageBox("Menu 5 is Clicked.", "OK"); break;
}
}
}break;
case 5: poi.DestroyInfoBox(); break;
}
}
|
|
|
|
See Also
|
|
Map Preview
|
|