|
| TalMap SDK Libary Reference |
| HOWTO: TalMapX Control의 XLayer 를 이용한 면적, 거리 측정방법. |
|
요약
| |
이 문서는 TalMapX Control에서 제공하는 강력한 오브젝트(Object)인 XLayer Object를 이용하여 범위측정, 거리계산, Object를 수정합니다.
사용자는 이 문서를 통해 XLayer - Polygon 을 생성하고 Control 하는 방법을 학습할 수 있습니다.
사용자는 XLayer 관련 Object를 이용하여 범위를 측정하고 직선거리를 계산 할 수 있습니다.
사용자는 지도에 생성된 객체를 클릭하여 임의로 수정 할 수 있습니다.
|
|
|
방법
| |
1. TalMapX Contorl의 CtrlMan을 통해 XLayer Manger를 얻습니다.
2. XLayer Style을 생성하여, 원하는 스타일을 설정합니다.
3. XLayer Manger의 NewPolygon() 메소드를 이용하여 XLayer Object를 생성합니다.
4. 범위측정시 Polygon을 생성 하고 거리계산시 Polyline을 생성 합니다.
5. 생성된 객체를 삭제 또는 수정 합니다.
|
|
|
Example
| |
|
|
<html>
<head>
<script language="javascript">
<!--
//------------------------------------------------------------------------------
// 범위측정을 위한 XLayerPolygon 생성
//------------------------------------------------------------------------------
function OnCheckArea()
{
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_PATTERN"));
var obj = layerMan.NewPolygon(100, -1);
obj.SetStyle(style);
obj.SetClosed(1);
obj.SetShowDistance(0);
obj.SetShowArea(1);
obj.SetCanClick(1);
obj.SetCanFocus(1);
obj.SetStateModeNew();
}
//------------------------------------------------------------------------------
// 거리측정을 위한 LayerPolyLine 생성
//------------------------------------------------------------------------------
function OnCheckDistnace()
{
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(100, -1);
obj.SetStyle(style);
obj.SetClosed(0);
obj.SetShowDistance(1);
obj.SetCanClick(1);
obj.SetCanFocus(1);
obj.SetStateModeNew();
}
//------------------------------------------------------------------------------
// XLayer 제거
//------------------------------------------------------------------------------
function OnObjDelete()
{
var ctrlMan = m_Map.GetCtrlMan();
var layerMan = ctrlMan.GetLayerMan();
var layer = layerMan.FindLayer(100);
if (layer) {
layer.ClearObject();
}
}
//------------------------------------------------------------------------------
// Object 수정모드
//------------------------------------------------------------------------------
function OnObjModify()
{
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"));
}
}
//------------------------------------------------------------------------------
-->
</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>
|
|
|
|
//------------------------------------------------------------------------------
// 범위측정을 위한 XLayerPolygon 생성
//------------------------------------------------------------------------------
void CSampleDlg::OnCheckArea()
{
CXCtrlMan ctrlman = m_Map.GetCtrlMan();
CXLayerMan layerman = ctrlman.GetLayerMan();
CXUtility util = m_Map.GetUtility();
// Make Layer Style
CXLayerStyle style = layerman.NewStyle(-1);
style.SetPen(util.RGBColor(255, 0, 0), 1, util.GetConstToValue(_T("PS_SOLID")));
style.SetBrush(util.RGBAColor(0, 0, 255, 100), util.GetConstToValue(_T("BS_SOLID")));
// Make Polygon
CXLayerPolygon obj = layerman.NewPolygon(100, -1);
obj.SetStyle(style);
obj.SetClosed(1); // 1:polygon, 0:polyline
obj.SetShowDistance(0);
obj.SetShowArea(1); // 범위측정 값을 표시
obj.SetStateModeNew(); // 사용자 입력값을 받습니다
}
//------------------------------------------------------------------------------
// 거리측정을 위한 LayerPolyLine 생성
//------------------------------------------------------------------------------
void CSampleDlg::OnCheckDistance()
{
CXCtrlMan ctrlman = m_Map.GetCtrlMan();
CXLayerMan layerman = ctrlman.GetLayerMan();
CXUtility util = m_Map.GetUtility();
// Make Layer Style
CXLayerStyle style = layerman.NewStyle(-1);
style.SetPen(util.RGBColor(255, 0, 0), 1, util.GetConstToValue(_T("PS_DOT")));
// Make Polygon
CXLayerPolygon obj = layerman.NewPolygon(100, -1);
obj.SetStyle(style);
obj.SetClosed(0); // 1:polygon, 0:polyline
obj.SetShowDistance(1);// 거리측정값을 표시 합니다.
obj.SetStateModeNew(); // 사용자 입력값을 받습니다
}
//------------------------------------------------------------------------------
// XLayer 제거
//------------------------------------------------------------------------------
void CSampleDlg::OnSmLayerdel()
{
CXLayerMan layerman = ctrlman.GetLayerMan();
CXLayer layer = layerman.FindLayer(100);
if (layer.m_lpDispatch != NULL) {
layer.ClearObject();
}
}
//------------------------------------------------------------------------------
// Object 수정모드
//------------------------------------------------------------------------------
void CSampleDlg::OnSmLayeredit()
{
CXLayerMan layerman = ctrlman.GetLayerMan();
CXUtility util = m_Map.GetUtility();
CXBaseMan baseman = layerman.CastToBaseManager();
if(baseman.GetManMode() == util.GetConstToValue(_T("TMMAN_MODE_EDIT"))) {
baseman.SetManMode(util.GetConstToValue(_T("TMMAN_MODE_NONE")));
} else {
baseman.SetManMode(util.GetConstToValue(_T("TMMAN_MODE_EDIT")));
}
}
|
|
|
|
See Also
|
|
Map Preview
|
|