MapX画点

来源:互联网 发布:excel去除相同数据 编辑:程序博客网 时间:2024/06/05 16:54

由于MAPX是以组建的形式提供给我们,要在上面画点,就必须相应鼠标事件:

添加宏

ON_EVENT(CMapView, IDC_MAP, DISPID_MOUSEDOWN /* MouseDown */, OnMouseDownMap, VTS_I2 VTS_I2 VTS_R4 VTS_R4)

以及实现事件的处理函数

void CMapView::OnMouseDownMap(short Button, short Shift, float screenX, float screenY){ double mapX,mapY ; CMapXPoints pts ; CMapXPoint pt ; CMapXLayer layer ; pts.CreateDispatch( pts.GetClsid() );           //创建对象 pt.CreateDispatch( pt.GetClsid() );               //创建对象  screenX = X;  screenY = Y;  m_pMap->ConvertCoord(&screenX,&screenY,&mapX,&mapY,miScreenToMap);                     //屏幕坐标装换为地图坐标 pt.Set( mapX , mapY ) ; pts.Add(pt);                   //将点加入点集合//查找图层是否存在 if ( !m_pMap->LayerExist("tmpLayer")  ) {  layer = m_pMap->GetLayers().CreateLayer("tmpLayer"); } else{  layer = m_pMap->GetLayers().Item("tmpLayer"); } //获取图元工程对象,用于创建图元 CMapXFeatureFactory ff = m_pMap->GetFeatureFactory();  COleVariant vtPoints; vtPoints.vt = VT_DISPATCH; vtPoints.pdispVal = pts.m_lpDispatch; vtPoints.pdispVal->AddRef();  //创建多点图元,并加到指定的图层中 CMapXFeature fe = ff.CreateMultipoint( vtPoints ); layer.AddFeature( fe ) ;}

这样就实现了画点操作
原创粉丝点击