⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapview.cpp

📁 用VC开发的GPS监控跟踪软件,已经调试过,并在实际中使用,现与大家共享
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	CView::OnDestroy();
	
	
	CMainFrame* pFrame=((CMainFrame*)AfxGetMainWnd());
	pFrame->m_pMapView=NULL;	
}

void CMapView::OnAddTarget() 
{
	m_ctrlMapX.SetCurrentTool(GPS_ADDTARGET);
	
}
void CMapView::OnUpdateAddTarget(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_ctrlMapX.GetCurrentTool()==GPS_ADDTARGET);
	
}
void CMapView::OnEditTarget() 
{
	m_ctrlMapX.SetCurrentTool(GPS_EDITTARGET);
	
}

void CMapView::OnUpdateEditTarget(CCmdUI* pCmdUI) 
{
  pCmdUI->SetCheck(m_ctrlMapX.GetCurrentTool()==GPS_EDITTARGET);
	
}
void CMapView::OnStartGps() 
{
	SetTimer(100,1500,NULL);
	m_bIsStartGps=TRUE;
	//SetAnimationLayer();
}

void CMapView::OnUpdateStartGps(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(!m_bIsStartGps);
	
}

void CMapView::OnEndGps() 
{
	KillTimer(100);
	m_bIsStartGps=FALSE;
	
}

void CMapView::OnUpdateEndGps(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_bIsStartGps);
	
}



//鼠标操作
void CMapView::OnMouseDownMap(short Button, short Shift, float X, float Y) 
{
	if(Button==1){
	   m_nGpsOperation=m_ctrlMapX.GetCurrentTool();
	   switch(m_nGpsOperation)
	   {
	   case GPS_ADDTARGET:{
		  
		  double lonX,latY;
		  m_ctrlMapX.ConvertCoord(&X,&Y,&lonX,&latY,miScreenToMap);
		  
		  //gpsTarget.SetStartXY(lonX,latY);
		  
		  
		  m_pTarget=new CGpsSet;

		  m_pTarget->SetStartXY(lonX,latY);

		  
		  CTargetSet dlg(*m_pTarget);				  
		  if(dlg.DoModal()==IDOK)
			  dlg.GetGpsData(*m_pTarget);
          else return;

		  if(!FindLayer("gps"))
			  m_ctrlMapX.GetLayers().Add("gps.tab");

          CMapXLayer layer;

		  if(FindLayer("gps",layer))
		  {
		      m_pTarget->AddFeature(&m_ctrlMapX,layer);
			  gpsTargetArray.AddTarget(m_pTarget);
		  }
		  else
		  {
			MessageBox("不能发现移动图层");
		  }

		}break;
       case GPS_EDITTARGET:
		{
		  
		  gpsTargetArray.SetActiveTarget(gpsTargetArray.HitTest(X, Y,&m_ctrlMapX));
		  
		  if(gpsTargetArray.m_pActiveTarget==NULL) return;
		  CTargetSet dlg(*gpsTargetArray.m_pActiveTarget);				  
		  if(dlg.DoModal()==IDOK)
			  dlg.GetGpsData(*gpsTargetArray.m_pActiveTarget);
          else return;
		
		
		}break;

           
       }	   
	
	}



}
BOOL CMapView::OnMouseUpInMap(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
{

	return TRUE;
}
// you could use this to display the lat/long values on the status bar
BOOL CMapView::OnMouseMoveInMap(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
{
	return TRUE;
}



//选择目标样式
void CMapView::OnGpsChangesymbol() 
{
		if(!FindLayer("gps"))
		m_ctrlMapX.GetLayers().Add("gps.tab");

        CMapXLayer layer;
		if(FindLayer("gps",layer))
		{
			CMapXStyle style=layer.GetStyle();
			style.PickSymbol();
			layer.SetStyle(style.m_lpDispatch);
       
        } 
		else
		{
			MessageBox("不能发现移动图层");
		}
	
}

void CMapView::OnUpdateGpsChangesymbol(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CMapView::OnTimer(UINT nIDEvent) 
{
	gpsTargetArray.Run();	
	UpdateSense();
	CView::OnTimer(nIDEvent);
}



void CMapView::UpdateSense()
{
	CMapXLayer layer;
	if(FindLayer("gps",layer))
		gpsTargetArray.UpdateGraph(layer);
	layer.Refresh();
}

void CMapView::SetAnimationLayer()
{
		if(!FindLayer("gps"))
		m_ctrlMapX.GetLayers().Add("gps.tab");

        CMapXLayer layer;
		if(FindLayer("gps",layer))
			m_ctrlMapX.GetLayers().SetAnimationLayer(layer.m_lpDispatch);
}

void CMapView::ClearAllTarget()
{
	CMapXLayer layer;
	if(FindLayer("gps",layer))
	{	
		CMapXFeatures features=layer.AllFeatures();
		for(int i=1;i<=features.GetCount();i++)
		   layer.DeleteFeature(features.Item(i));
		gpsTargetArray.DeleteAllTarget();
	}
}

BOOL CMapView::DestroyWindow() 
{
	
	
	return CView::DestroyWindow();
}

void CMapView::OnChangeSymbol() 
{
	m_bIsAutoLable=!m_bIsAutoLable;
	CMapXLayer layer;
	if(FindLayer("gps",layer))
	{	
		
	/*	 CString str1=m_strEditLayer; 
		CMapXDataset dataSet;
		
		if(!IsInDataSet(m_strEditLayer))		
		 dataSet=m_pCtrlMapX->GetDatasets().Add(miDataSetLayer, vtLayer, str1);*/

		
		layer.SetAutoLabel(m_bIsAutoLable);


	}
	
}

void CMapView::OnUpdateChangeSymbol(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_bIsAutoLable);
	
}

void CMapView::OnLineChange() 
{
	CMapXStyle style=m_ctrlMapX.GetDefaultStyle();
	style.PickLine();
	
}

void CMapView::OnReagionChange() 
{
	CMapXStyle style=m_ctrlMapX.GetDefaultStyle();
	style.PickRegion();
	
}

void CMapView::OnMapxProperty() 
{
	m_ctrlMapX.PropertyPage();
	
}

void CMapView::OnDatabindNormal() 
{
	
	try {
		CMapXLayer layer = m_ctrlMapX.GetLayers().Item("USA");

		VARIANT vtLayer;
		vtLayer.vt = VT_DISPATCH;
		vtLayer.pdispVal = layer.m_lpDispatch;

		CMapXDataset dataSet = m_ctrlMapX.GetDatasets().Add(miDataSetLayer, vtLayer, "USA Layer");
	
		
	}
	catch (COleDispatchException *e) {
		e->ReportError();
		e->Delete();
	}
	catch (COleException *e) {
		e->ReportError();
		e->Delete();
	}

}

void CMapView::OnUpdateDatabindNormal(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CMapView::OnBinddataOdbc() 
{
	// TODO: Add your command handler code here
	
}

void CMapView::OnUpdateBinddataOdbc(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CMapView::OnBinddataArray() 
{
	// TODO: Add your command handler code here
	
}

void CMapView::OnUpdateBinddataArray(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CMapView::OnBinddataNobind() 
{
	// TODO: Add your command handler code here
	
}

void CMapView::OnUpdateBinddataNobind(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CMapView::OnThemeReange() 
{
	VARIANT Type; 
	VARIANT Name;
	VARIANT Field;
	VARIANT Item;
//	long FieldNums =4;  // theme field numbers
	long FieldNums[3] = { 3, 4, 5};  // theme field numbers
	int n=3;
    
	// construct a safearray of column numbers (could use names instead)
	/*SAFEARRAY FAR* psa=NULL; 
	SAFEARRAYBOUND rgsabound[1]; 
	long ix;

	rgsabound[0].lLbound = 1; 
	rgsabound[0].cElements = n; 

	psa = SafeArrayCreate(VT_I4, 1, rgsabound); 
	if(psa == NULL){ 
		return;
	}
	for (int i=0; i< n; i++) {
		ix=i+1;
		SafeArrayPutElement(psa, &ix, &FieldNums[i]);
	}*/

	// put array in field param
	Field.vt = /*VT_ARRAY |*/ VT_I4;
	//Field.parray = psa;
	Field.lVal = 5;
	Type.vt = VT_I4;
	Type.lVal = miThemeRanged;			//auto choose theme type
	Name.vt = VT_ERROR;								// use default name
	Name.scode = DISP_E_PARAMNOTFOUND;
	//miThemeRanged = 0,
	//miThemeBarChart = 1,
	//miThemePieChart = 2,
	//miThemeGradSymbol = 3,
	//miThemeDotDensity = 4,
	//miThemeIndividualValue = 5,
	//miThemeAuto = 6,
	//miThemeNone = 9,
	
	try {
		// get themes collection
		CMapXThemes objThemes = m_ctrlMapX.GetDatasets()[1L].GetThemes();

		// want to see full legend
		m_ctrlMapX.SetPreferCompactLegends(FALSE);

		// add theme - will be visible by default
		CMapXTheme thm = objThemes.Add(Type, Field, Name);
		thm.ThemeDlg();
		//CMapXThemeProperties themeDlg=thm.GetThemeProperties();
		//CMapXRangeCategories cate=themeDlg.GetRangeCategories();
		//cate.GetProperty();
	}
	catch (COleDispatchException *e) {
		e->ReportError();
		e->Delete();
	}
	catch (COleException *e) {
		e->ReportError();
		e->Delete();
	}
	
}

void CMapView::OnUpdateThemeReange(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CMapView::OnThemeDot() 
{
	// TODO: Add your command handler code here
	
}

void CMapView::OnUpdateThemeDot(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CMapView::OnThemePie() 
{
	// TODO: Add your command handler code here
	
}

void CMapView::OnUpdateThemePie(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CMapView::OnThemeSymbol() 
{
	// TODO: Add your command handler code here
	
}

void CMapView::OnUpdateThemeSymbol(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CMapView::OnThemeIndiv() 
{
	// TODO: Add your command handler code here
	
}

void CMapView::OnUpdateThemeIndiv(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CMapView::OnThemeBar() 
{
	VARIANT Type; 
	VARIANT Name;
	VARIANT Field;
	VARIANT Item;
	long FieldNums[3] = { 4, 5, 6};  // theme field numbers
	int n=3;

	Type.vt = VT_I4;
	Type.lVal = miThemeBarChart;			//auto choose theme type
	Name.vt = VT_ERROR;								// use default name
	Name.scode = DISP_E_PARAMNOTFOUND;
	Item.vt = VT_I4;									// for getting first dataset
	Item.lVal = 1;

	// construct a safearray of column numbers (could use names instead)
	SAFEARRAY FAR* psa=NULL; 
	SAFEARRAYBOUND rgsabound[1]; 
	long ix;

	rgsabound[0].lLbound = 1; 
	rgsabound[0].cElements = n; 

	psa = SafeArrayCreate(VT_I4, 1, rgsabound); 
	if(psa == NULL){ 
		return;
	}
	for (int i=0; i< n; i++) {
		ix=i+1;
		SafeArrayPutElement(psa, &ix, &FieldNums[i]);
	}

	// put array in field param
	Field.vt = VT_ARRAY | VT_I4;
	Field.parray = psa;

	try {
		// get themes collection
		CMapXThemes objThemes = m_ctrlMapX.GetDatasets()[1L].GetThemes();

		// want to see full legend
		m_ctrlMapX.SetPreferCompactLegends(FALSE);

		// add theme - will be visible by default
		CMapXTheme thm = objThemes.Add(Type, Field, Name);
	}
	catch (COleDispatchException *e) {
		e->ReportError();
		e->Delete();
	}
	catch (COleException *e) {
		e->ReportError();
		e->Delete();
	}

	// clean up fields array
	if (psa)
		SafeArrayDestroy(psa);
	
}

void CMapView::OnUpdateThemeBar(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -