|
| TalMap SDK Libary Reference |
| HOWTO: TalMapX Control의 XLayer 사용하는 방법. |
|
요약
| |
이 문서는 TalMapX Control에서 제공하는 강력한 오브젝트(Object)인 XLayer Object를 사용하는 방법을 설명합니다.
사용자는 이 문서를 통해 XLayer - Shape, Polygon, PolyLing ... - 들을 생성하고 제거하는 방법을 학습할 수 있습니다.
사용자는 XLayer 관련 Object를 이용하여 원하는 스타일의 Layer들을 생성 및 추가/삭제 할 수 있습니다.
|
|
|
방법
| |
1. TalMapX Contorl의 CtrlMan을 통해 XLayer Manger를 얻습니다.
2. XLayer Style을 생성하여, 원하는 스타일을 설정합니다.
3. XLayer Manger의 NewXXXXX() 메소드를 이용하여 XLayer Object를 생성합니다.
4. 필요한 시점에 관련 오브젝트(Object)들을 제거합니다.
|
|
|
Example
| |
|
|
<html>
<head>
<script language="javascript">
<!--
//------------------------------------------------------------------------------
// XLayerShape 생성
//------------------------------------------------------------------------------
function MakeXLayerShape(layerID)
{
var ctrlMan = m_Map.GetCtrlMan();
var ctrlstate = ctrlMan.GetControlState();
var layerMan = ctrlMan.GetLayerMan();
var util = m_Map.GetUtility();
var centerLL = ctrlstate.GetLLCenter(); // 지도의 중심 좌표
// Step 1. Make XLayer Style
var style = layerMan.FindLayer(100);
if (style == null) {
style = layerMan.NewStyle(100);
style.SetPen(util.RGBColor(255, 0, 0), 1, util.GetConstToValue("PS_SOLID"));
style.SetBrush(util.RGBColor(0, 0, 255), util.GetConstToValue("BS_SOLID"));
}
// Step 2. Make XLayer Shape
var shape = layerMan.NewShape(layerID, -1);
shape.BeginUpdate();
shape.SetMapPos(centerLL._X, centerLL._Y, 0);
shape.SetAngle(0, 0, 90);
shape.AddPoint(0, -30);
shape.AddPoint(-26, -4);
shape.AddPoint(-13, -4);
shape.AddPoint(-13, 19);
shape.AddPoint(13, 19);
shape.AddPoint(13, -4);
shape.AddPoint(26, -4);
shape.SetStyle(style);
shape.EndUpdate();
}
//------------------------------------------------------------------------------
// XLayerPolygon 생성
//------------------------------------------------------------------------------
function MakeLayerPolygon(layerID)
{
var ctrlMan = m_Map.GetCtrlMan();
var ctrlstate = ctrlMan.GetControlState();
var layerMan = ctrlMan.GetLayerMan();
var util = m_Map.GetUtility();
var centerLL = ctrlstate.GetLLCenter(); // 지도의 중심 좌표
// Step 1. Make XLayer Style
var style = layerMan.FindStyle(200);
if (style == null) {
style = layerMan.NewStyle(200);
style.SetPen(util.RGBColor(255, 0, 0), 0.3, util.GetConstToValue("PS_SOLID"));
style.SetBrush(util.RGBAColor(0, 0, 255, 100), util.GetConstToValue("BS_SOLID"));
}
// Step 2. Make XLayer Polygon
// How To 01..... LayerMan에서 Layer를 생성한 뒤 Object를 생성하는 방법
var layer = layerMan.FindLayer(layerID);
if (!layer) {
layer = layerMan.NewLayer(layerID);
}
var polygon = layer.NewPolygon(-1);
/* How To 02..... LayerMan에서 바로 Object를 생성하는 방법
var polygon = layerMan.NewPolygon(layerID, -1);
*/ polygon.BeginUpdate();
polygon.AddPoint(centerLL._X + 100, centerLL._Y + 100);
polygon.AddPoint(centerLL._X + 100, centerLL._Y + 500);
polygon.AddPoint(centerLL._X + 500, centerLL._Y + 500);
polygon.AddPoint(centerLL._X + 500, centerLL._Y + 100);
polygon.SetClosed(1); // 0: PolyLine, 1: Polygon
polygon.SetStyle(style);
polygon.EndUpdate();
}
//------------------------------------------------------------------------------
// LayerPolyLine 생성
//------------------------------------------------------------------------------
function MakeLayerPolyLine(layerID)
{
var ctrlMan = m_Map.GetCtrlMan();
var ctrlstate = ctrlMan.GetControlState();
var layerMan = ctrlMan.GetLayerMan();
var util = m_Map.GetUtility();
var centerLL = ctrlstate.GetLLCenter(); // 지도의 중심 좌표
// Step 1. Make XLayer Style
var style = layerMan.FindStyle(300);
if (style == null) {
style = layerMan.NewStyle(300);
style.SetPen(util.RGBColor(255, 0, 0), 1, util.GetConstToValue("PS_SOLID"));
}
// Step 2. Make XLayer PolyLine
var polygon = layerMan.NewPolygon(layerID, -1);
polygon.BeginUpdate();
polygon.AddPoint(centerLL._X + 100, centerLL._Y + 100);
polygon.AddPoint(centerLL._X + 100, centerLL._Y + 500);
polygon.AddPoint(centerLL._X + 500, centerLL._Y + 500);
polygon.AddPoint(centerLL._X + 500, centerLL._Y + 100);
polygon.SetCanClick(1);
polygon.SetCanFocus(1);
polygon.SetClosed(0); // 0: Line, 1: Polygon
polygon.SetStyle(style);
polygon.EndUpdate();
}
//------------------------------------------------------------------------------
// SetStroke 설정하기
//------------------------------------------------------------------------------
function Polyline_Stroke()
{
var ctrlMan = m_Map.GetCtrlMan();
var ctrlstate = ctrlMan.GetControlState();
var layerMan = ctrlMan.GetLayerMan();
var util = m_Map.GetUtility();
var rect = ctrlstate.GetMapRect();
var centerLL = ctrlstate.GetLLCenter(); // 지도의 중심 좌표
var pos = util.GetMapPos();
pos._Lon = lon_eksys;
pos._Lat = lat_eksys;
// Step 1. Make XLayer Style
var style = layerMan.FindStyle(300);
if (style == null) {
style = layerMan.NewStyle(300);
style.SetPen(util.RGBAColor(255, 0, 0, 100), 15, util.GetConstToValue("PS_SOLID"));
}
var layer = layerMan.FindLayer(2000);
if (!layer) {
layer = layerMan.NewLayer(2000);
}
var polygon = layerMan.NewPolygon(2000, -1);
polygon.BeginUpdate();
polygon.AddPoint(centerLL._X + 50, centerLL._Y + 50);
polygon.AddPoint(centerLL._X + 250, centerLL._Y + 250);
polygon.SetStrokeCap(3);
polygon.SetClosed(1); // 0: PolyLine, 1: Polygon
polygon.SetStyle(style);
polygon.EndUpdate();
}
//------------------------------------------------------------------------------
// LayerCircle 생성
//------------------------------------------------------------------------------
function MakeCircle(lyaerID)
{
var ctrlman = m_Map.GetCtrlMan();
var util = m_Map.GetUtility();
var layerman = ctrlman.GetLayerMan();
style = layerman.FindStyle(400);
if (style == null) {
style = layerman.NewStyle(400);
style.SetPen(util.RGBColor(255, 0, 0), 2, util.GetConstToValue("PS_SOLID"));
style.SetBrush(util.RGBAColor(0, 0, 255, 100), util.GetConstToValue("BS_PATTERN"));
}
var obj = layerman.NewCircle(lyaerID, -1);
obj.SetStyle(style);
obj.SetClosed(1); // 0: 선만 표시 합니다. 1: Circle 내부에 Style 을 적용 합니다.
obj.SetCanFocus(1);
obj.SetCanClick(1);
obj.SetShowDistance(1); // 반경을 표시 합니다.
obj.SetShowArea(1); // 면적을 표시 합니다.
obj.SetStateModeNew();
}
//------------------------------------------------------------------------------
// XLayer 제거
//------------------------------------------------------------------------------
function RemoveLayer()
{
var ctrlMan = m_Map.GetCtrlMan();
var layerMan = ctrlMan.GetLayerMan();
layerMan.ClearLayer();
}
//------------------------------------------------------------------------------
-->
</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"
//------------------------------------------------------------------------------
// XLayerShape 생성
//------------------------------------------------------------------------------
void CSampleDlg::OnSmDrawShpae()
{
CXControlState ctrlstate = ctrlman.GetControlState();
CXLayerMan layerman = ctrlman.GetLayerMan();
CXUtility util = m_Map.GetUtility();
// 지도중심좌표
CXPoint centerLL = ctrlstate.GetLLCenter();
// Make Layer Style
CXLayerStyle style = layerman.NewStyle(-1);
style.SetPen(util.RGBColor(255, 0, 0), 1, util.GetConstToValue("PS_SOLID"));
style.SetBrush(util.RGBColor(0, 0, 255), util.GetConstToValue("BS_SOLID"));
// Make Layer Shape
CXLayerShape shape = layerman.NewShape(1, -1);
shape.BeginUpdate();
shape.SetMapPos(centerLL.GetX(), centerLL.GetY(), 0);
shape.SetAngle(0, 0, 90);
shape.AddPoint(0, -30);
shape.AddPoint(-26, -4);
shape.AddPoint(-13, -4);
shape.AddPoint(-13, 19);
shape.AddPoint(13, 19);
shape.AddPoint(13, -4);
shape.AddPoint(26, -4);
shape.SetStyle(style);
shape.EndUpdate();
}
//------------------------------------------------------------------------------
// XLayerPolygon 생성
//------------------------------------------------------------------------------
void CSampleDlg::OnSmLayerPolygonadd()
{
CXControlState ctrlstate = ctrlman.GetControlState();
CXLayerMan layerman = ctrlman.GetLayerMan();
CXUtility util = m_Map.GetUtility();
// 지도중심좌표
CXPoint centerLL = ctrlstate.GetLLCenter();
// Make Layer Style
CXLayerStyle style = layerman.NewStyle(-1);
style.SetPen(util.RGBColor(255, 0, 0), 1, util.GetConstToValue("PS_DOT"));
style.SetBrush(util.RGBAColor(255, 255, 0, 50), util.GetConstToValue("R2_MASKPEN"));
// Make Laeyr Polyline
CXLayer layer = layerman.FindLayer(1);
if (layer.m_lpDispatch == NULL) {
layer = layerman.NewLayer(1);
}
CXLayerPolygon obj = layer.NewPolygon(-1);
obj.BeginUpdate();
obj.AddPoint(centerLL.GetX() + 1000000, centerLL.GetY() + 1000000);
obj.AddPoint(centerLL.GetX() + 1000000, centerLL.GetY() - 1000000);
obj.AddPoint(centerLL.GetX() - 1000000, centerLL.GetY() - 1000000);
obj.AddPoint(centerLL.GetX() - 1000000, centerLL.GetY() + 1000000);
obj.SetClosed(1); // 0: PolyLine, 1: Polygone
obj.SetStyle(style);
obj.EndUpdate();
}
//------------------------------------------------------------------------------
// LayerPolyLine 생성
//------------------------------------------------------------------------------
void CSampleDlg::OnSmLayerPolygonadd()
{
CXControlState ctrlstate = ctrlman.GetControlState();
CXLayerMan layerman = ctrlman.GetLayerMan();
CXUtility util = m_Map.GetUtility();
// 지도중심좌표
CXPoint centerLL = ctrlstate.GetLLCenter();
// Make Layer Style
CXLayerStyle style = layerman.NewStyle(-1);
style.SetPen(util.RGBColor(255, 0, 0), 1, util.GetConstToValue("PS_DOT"));
style.SetBrush(util.RGBAColor(255, 255, 0, 50), util.GetConstToValue("R2_MASKPEN"));
// Make Laeyr Polyline
CXLayer layer = layerman.FindLayer(1);
if (layer.m_lpDispatch == NULL) {
layer = layerman.NewLayer(1);
}
CXLayerPolygon obj = layer.NewPolygon(-1);
obj.BeginUpdate();
obj.AddPoint(centerLL.GetX() + 1000000, centerLL.GetY() + 1000000);
obj.AddPoint(centerLL.GetX() + 1000000, centerLL.GetY() - 1000000);
obj.AddPoint(centerLL.GetX() - 1000000, centerLL.GetY() - 1000000);
obj.AddPoint(centerLL.GetX() - 1000000, centerLL.GetY() + 1000000);
obj.SetClosed(0); // 0: PolyLine, 1: Polygone
obj.SetStyle(style);
obj.EndUpdate();
}
//------------------------------------------------------------------------------
// XLayer 제거
//------------------------------------------------------------------------------
void CSampleDlg::OnSmLayerdel()
{
CXLayerMan layerman = ctrlman.GetLayerMan();
CXLayer layer = layerman.FindLayer(1);
if (layer.m_lpDispatch != NULL) {
layer.ClearObject();
}
}
|
|
|
|
See Also
|
|
Map Preview
|
|