阅读:2388回复:6
怎样通过数据库绑定创建线图层并显示线图元?谢谢
<P>我的意思是通过数据库绑定图层 并创建线图元
例子都是点图元的 点图元只要x,y坐标就能确定 但是线图元需要x1,x2,y1,y2而绑定 就是说, bindlayerobject.refcolumn1,2分别是点图元的经纬度 那线图元需要2个点坐标才能确定 怎么绑定呀? 谢谢</P> [此贴子已经被作者于2004-9-24 8:03:57编辑过]
|
|
1楼#
发布于:2004-10-10 06:12
study
|
|
2楼#
发布于:2004-09-25 11:01
我改成这样可以通过编译,并且可以运行。
<P>我改成这样可以通过编译,并且可以运行</P>
<P> dataset =layer.GetDatasets().Add(miDataSetADO,(_variant_t)(IDispatch*)pRs,(char*)_bstr_t(ColName),false);</P> <P>但是弹出对话框说"operation is not allow on the datasets collection" 不能在数据集上进行这个操作啊</P> <P>我关键字段都设置为主键了,并且在mapinfo里设置图层该字段也为索引了。但还是有问题啊</P> <P>我怀凝是不是我的记录指针转换有错,(_variant_t)(IDispatch*)pRs????</P> |
|
3楼#
发布于:2004-09-25 10:54
谢谢 fit4u 了,是啊,用VC开发mapx资料太少了!!
<TABLE cellPadding=4 cellSpacing=0 width="100%">
<TR> <TD vAlign=center width=*> <FONT color=#000066><B>fit4u</B></FONT> </TD></TR></TABLE>你能给delphi的例子给来参考考吗?我是用VC,但是delphi也有点启发的。 |
|
4楼#
发布于:2004-09-25 08:38
<P>现在vb+mapx的例子比较多</P><P>vc delphi的确实不多</P><P>参数类型什么的就比较麻烦了</P><P>+u呀~~~~</P>
|
|
5楼#
发布于:2004-09-25 08:37
<P>对不起</P><P>我用delphi 但是我也会经常碰到这样的问题</P><P>请查参数表 datasets.add 的参数具体到vc中到底怎么定义</P><P>在前面文章中有个中文help 好像里面又vc的例子</P>
|
|
6楼#
发布于:2004-09-24 20:37
<P><FONT color=#000066><B>fit4u</B></FONT> :</P><P> 你好,你肯定会在VC中,mapx中指定图层怎么通过ADO与SQL连接?</P><P><TABLE cellPadding=0 cellSpacing=0 style="WORD-BREAK: break-all" width="95%"><TR><TD align=left vAlign=top width=32></TD><TD 0px; WIDTH: 100%; WORD-WRAP: break-word"><FONT color=#333333 face=宋体>void zjgisView::OnToolUsed(short ToolNum,double X1,double Y1,double X2,double Y2,double Distance,BOOL Shift,BOOL Ctrl,BOOL* EnableDefault)
{ CString str; CMapXPoint pt; CMapXFeatures fs; CMapXFeature f; pt.CreateDispatch(pt.GetClsid()); pt.Set(X1,Y1); str.Format("Tool=%d,[%f,%f],[%f,%f],dist=%f,%s,%s\n",ToolNum,X1,Y1,X2,Y2,Distance,(Shift)? "Shift":" ",(Ctrl)? "Ctrl-": " "); TRACE(str); <P>SetRedraw(false); if(ToolNum==MYTOOL_INFO) { dlg.m_ctrList.ResetContent(); try { if(m_ctrlMapX.GetDatasets().GetCount()==0) {BSTR ColName; VARIANT sd,LayerName,FieldName,pRecord; CMapXLayer layer; layer =m_ctrlMapX.GetLayers().Item(1); sd.vt = VT_DISPATCH; sd.pdispVal = layer.m_lpDispatch; sd.pdispVal->AddRef(); CString strLayername=m_ctrlMapX.GetLayers().Item(1).GetName(); CString sql=_T("SELECT * FROM 光点分布"); pRs->Open((_variant_t)sql,(IDispatch*pConn,adOpenDynamic,adLockOptimistic,adCmdText); pRs->GetFields()->Item[long(0)]->get_Name(;ColName); dataset =m_ctrlMapX.GetDatasets().Add(miDataSetADO,pRs,ColName,sd); fieldcount=dataset.GetFields().GetCount();} fs=m_ctrlMapX.GetLayers().Item(1).SearchAtPoint(pt); if(fs.GetCount()!=1) { return;} f=fs.Item(1); COleVariant vRow; COleVariant vVal; vRow.vt=VT_DISPATCH; vRow.pdispVal=f.m_lpDispatch; vRow.pdispVal->AddRef(); CString strtemp; for(long i=1;i<=fieldcount;i++) { strtemp=dataset.GetFields().Item(i).GetName(); strtemp+=_T(":"); vVal=dataset.GetValue(vRow,COleVariant(i)); if(vVal.vt!=VT_NULL) { vVal.ChangeType(VT_BSTR); strtemp+=vVal.bstrVal; } dlg.m_ctrList.AddString((LPCTSTR)strtemp); } dlg.UpdateData(false); dlg.ShowWindow(SW_SHOW); } catch(COleDispatchException *e) { e->ReportError(); e->Delete(); } catch(COleException *e) { e->ReportError(); e->Delete(); } }</P><P>SetRedraw(true);</P><P>}</P><P>dataset =m_ctrlMapX.GetDatasets().Add(miDataSetADO,pRs,ColName,sd); 我这一句有错误啊,都说我的参数设置类型不对啊,该如何设置啊,这段程序是要显示信息工具。就是pRs记录指针这个参数和绑定图层sd这个参数不知该如何设置?</P></FONT></TD></TR></TABLE> </P> |
|