You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

338 lines
8.3 KiB
C

2 years ago
#pragma once
#ifndef __GISMANAGER_H__
#define __GISMANAGER_H__
#include "map.h"
#include <iostream>
#include <vector>
#include "shapedrawingoptions.h"
#include "labelcategory.h"
#include "shapefilecategory.h"
#include "shapefilecategories.h"
#include "table.h"
#include "shape.h"
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>
#pragma pack(1)
struct PtPixel
{
PtPixel()
{
_ptX = 0;
_ptY = 0;
}
PtPixel(int x, int y)
{
_ptX = x;
_ptY = y;
}
int _ptX;
int _ptY;
};
//<2F>Զ<EFBFBD><D4B6><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct PointXY
{
PointXY()
{
x=0;
y=0;
}
PointXY(double px, double py)
{
x = px;
y = py;
}
double x;
double y;
};
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct GeoCoord
{
GeoCoord()
{
lon = lat = alt = 0.0;
}
GeoCoord(double x, double y, double z)
{
lon = x;
lat = y;
alt = z;
}
double lon;
double lat;
double alt;
};
#pragma pack()
//<2F><><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum EtcFenceType
{
ForbidFly, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SafeArea, //<2F><>ȫ<EFBFBD><C8AB>
NoDef //<2F>޶<EFBFBD><DEB6><EFBFBD>
};
class EtcFenceManager;
class EditAttributes;
typedef std::vector<PointXY> PointVec;
class GISManager
{
public:
GISManager();
~GISManager();
//<2F><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
static GISManager* getInstance();
//<2F><><EFBFBD>ٺ<EFBFBD><D9BA><EFBFBD>
static void DestroyObject();
void init();
/*!
brief:<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ͼ<EFBFBD>ؼ<EFBFBD>
param:CMap1*
*/
void setMap(CMap1* pMap);
//<2F>򿪵<EFBFBD>ͼ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
void Openlocalfile(CString file);
CString GetFileType(CString file);
CString GetFileName(CString file);
void Redraw();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
void RemoveAllLayers();
/*!
brief<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijһͼ<EFBFBD><EFBFBD>
param: shapeIDͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return<EFBFBD><EFBFBD>void
*/
void EraseShape(long& shapeID);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<EFBFBD>ͼ<EFBFBD><EFBFBD>
param:shpLayerIDͼ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>ptStyle<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>drawColor<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
param:ptSize<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
return:void
*/
void CreateEmptyPointShapefile(long &shpLayerID,mapWindow::tkDefaultPointSymbol ptStyle = mapWindow::tkDefaultPointSymbol::dpsSquare,
const unsigned long drawColor = RGB(255,0,0), int ptSize = 20);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>Shapefileͼ<EFBFBD><EFBFBD>
param:layerHandleͼ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>drawColor<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>fillColor<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
param:fillTransparency͸<EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>0-255<EFBFBD><EFBFBD>
return:void
*/
void CreateEmptyAreaShapfile(long& layerHandle, const unsigned long drawColor, const unsigned long& fillColor = RGB(0,100,100),
const float& fillTransparency = 60);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>shpfile<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
param:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫlineColor
param:lineWidth<EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>Ϊ1
param:<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>shpLayerID
return:void
*/
void CreateEmptyLineShapfile(long &shpLayerID, const unsigned long lineColor, float lineWidth = 1,
mapWindow::tkDashStyle lineStyle = mapWindow::tkDashStyle::dsCustom);
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>shpfileͼ<65><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>룺ʸ<EBA3BA><CAB8>ͼ<EFBFBD><CDBC>ID<49><44>shpLayerID<49><44>shp<68><70><EFBFBD><EFBFBD>shpType
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ȡ<EFBFBD>lon; γ<>ȡ<EFBFBD>lat
void AddOnePoint2Shapfile(const long shpLayerID, const int shpType, const double lon, const double lat);
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ڵ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>drawLayerID
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAA3AC><EFBFBD><EFBFBD>lon, γ<><CEB3>lat
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>strPtName
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫstrColor
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>ֵfontColor
void DrawPointShapeLayer(long &drawLayerID, const double lon, const double lat,
CString strPtName, const CString strColor, unsigned long fontColor);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
param:shapeLayerID<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>
param:rotation<EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
*/
void setPointRotation(const long& shapeLayerID, double rotation);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>עʱʹ<EFBFBD><EFBFBD>
param: shapeIDͼ<EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>, fontSize<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>colorName<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,fontColor<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
param: XOffset/YOffset<EFBFBD><EFBFBD>עλ<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return: void
*/
void SetLabelCategory(const long& shapeID, int fontSize = 12, CString colorName = _T("<EFBFBD><EFBFBD>ɫ"), unsigned long fontColor = RGB(255,0,0), double XOffset = 0, double YOffset = 0);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>עʱʹ<EFBFBD><EFBFBD>
param: shapeIDͼ<EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>, fontSize<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>colorName<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,fontColor<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
param: XOffset/YOffset<EFBFBD><EFBFBD>עλ<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return: void
*/
void SetLabelCategory2(const long& shapeID, int fontSize = 12, unsigned long fontColor = RGB(255,0,0),
unsigned long frameBackColor = RGB(0,0,0), double XOffset = 0, double YOffset = 0);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϱ<EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
param:layerHandle,
return:void
*/
void SetInnerLabelCategory(const long& layerHandle,int fontSize = 12, unsigned long fontColor = RGB(255,0,0),
double XOffset = 0, double YOffset = 0);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SetLabelCategory
param: isAdd true<EFBFBD><EFBFBD>ʾ׷<EFBFBD><EFBFBD>false<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>shapefileIDͼ<EFBFBD><EFBFBD>ID<EFBFBD>ţ<EFBFBD>labelName<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>lon<EFBFBD><EFBFBD>lat<EFBFBD><EFBFBD>עλ<EFBFBD><EFBFBD>
param:rotation<EFBFBD><EFBFBD>ת<EFBFBD>Ƕȣ<EFBFBD>labalCatIndexʹ<EFBFBD><EFBFBD>label<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return: void
*/
void drawLabel(bool isAdd, const long& shapefileID, const CString& labelName, const double& lon, const double& lat,
const double& rotation = 0, const long& labalCatIndex = 0);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD>ݾ<EFBFBD>γ<EFBFBD>ȡ<EFBFBD><EFBFBD>Ƕȼ<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
param:lon lat yaw<EFBFBD><EFBFBD>γ<EFBFBD>ȺͽǶ<EFBFBD>
param:pArrayData<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD><EFBFBD>pvec<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void CalculatePolygonCoordinate(const double lon, const double lat, const double yaw,
double (*pArrayData)[2], const std::vector<PtPixel>& pvec);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijһͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>shape
param:shapeLayerIDͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ruturn: void
*/
void clearShapefileShape(const long& shapeLayerID);
/*!
brief:<EFBFBD><EFBFBD>ȡͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
param:layerHandleͼ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>elementIDԪ<EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>selѡ<EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>0
return:long
*/
long getLayerShapeIndex(const long& layerHandle, const int& elementID, const int& sel = 0);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD>ȡԪ<EFBFBD><EFBFBD>ID
param:layerHandleͼ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>shapeIndexͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>selѡ<EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>0
return:long
*/
int getLayerShapeEleID(const long& layerHandle, const long& shapeIndex, const int& sel = 0);
/*!
brief:ɾ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ͼԪ
param:layerhandleͼ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>shapeIndexͼԪ<EFBFBD><EFBFBD>
return:bool
*/
bool deleteShape(const long& layerHandle, const long& shapeIndex);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
param:layerHandleͼ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>shapeIndexͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
param:lineColor<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>lineWidth<EFBFBD>߿<EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
*/
void changeLayerShapeLineStyle(const long& layerHandle, const long& shapeIndex, const CString& styleName, unsigned long lineColor,float lineWidth = 1,
mapWindow::tkLineStipple lineStyle = mapWindow::tkLineStipple::lsDashed);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
param:layerHandleͼ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>shapeIndexͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
param:styleName<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>drawColor<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>fillColor<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
param: fillTransparency<EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>fillType<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return:void
*/
void changeAreaLayerShapeStyle(const long& layerHandle, const long& shapeIndex, const CString& styleName, const unsigned long drawColor,
const unsigned long& fillColor, const float& fillTransparency);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ֵ
param:layerhandleͼ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>shapeIndexͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, fieldName<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>value<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ֵ
return:void
*/
void editAttributeValue(const long& layerHandler, const long& shapeIndex, const CString& fieldName, const CString& value);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
param:layerHandleͼ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>x y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>, x2 y2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>½<EFBFBD>λ<EFBFBD><EFBFBD>
param:ѡ<EFBFBD><EFBFBD>ģʽ
return:long<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
long selectShape(const long& layerHandle, long x, long y, long x2 = -1, long y2 = -1, bool isPt = false,
mapWindow::SelectMode selectMode = mapWindow::SelectMode::INCLUSION);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>ѡ<EFBFBD><EFBFBD>Χѡ<EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
param:layerHandleͼ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>x1 y1<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD>λ<EFBFBD>ã<EFBFBD>x2 y2<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD>λ<EFBFBD><EFBFBD>
param:selectedIndexVec<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return:void
*/
void selectShapes(const long& layerHandle, long x1, long y1, long x2, long y2, std::vector<long>& selectedIndexVec);
/*!
brief:<EFBFBD><EFBFBD>ѡѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>
param:x<EFBFBD><EFBFBD>y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
return:long
*/
long selectAreaShape(const long& layerHandle, long x, long y);
/*!
brief:<EFBFBD>ͷ<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>ѡ<EFBFBD>е<EFBFBD>ͼԪ
parma:ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return:void
*/
void releaseSelected(const long& layerHandle);
/*!
brief:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>
param:x y<EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD>lenOfSide<EFBFBD>߳<EFBFBD>, extents<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
return:void
*/
void calculateExtents(const double& x, const double& y, double lenOfSide, mapWindow::IExtentsPtr extents);
public:
CMap1* m_map;
//<2F>Ƿ<EFBFBD><C7B7>򿪵<EFBFBD>ͼ
bool m_bHaveAddMap;
//<2F><>ͼ<EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
CWnd* m_pMapCwnd;
/*!<21><><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
EtcFenceManager* m_etcFenceManager;
/*!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><E0BCAD>*/
EditAttributes* m_editAttributes;
private:
static GISManager* m_gisMananger; //<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
static int m_iCounter;
};
#endif