阅读:3248回复:10
【求教】关于用VB+MO画点
<P>我有一组点数据,每个点的横坐标都大约在500,000左右,纵坐标都大约在</P>
<P>4,000,000左右,我在一个5000*5000的MAP控件上想把它们画出来,可是</P> <P>结果Map控件上什么都没有,是没画上还是显示不出来?</P> <P>(Scorllbars=ture)</P> <P>请问各位大侠这个问题怎么解决?</P> <img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /> |
|
1楼#
发布于:2005-12-21 12:18
晕,我发的帖子总是没人回!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
2楼#
发布于:2005-12-23 15:39
<P>都不知道你是怎么画的,代码可以看一下吗?</P>
<P>你只是想在map1上显示一下还是把它保存到图层里在渲染呀</P> |
|
3楼#
发布于:2005-12-25 15:14
<P>是否做过,将点数据转为控制坐标。这样也可以显示的。不过坐标变小点。要么把数据作一次</P>
<P>转为地图坐标,这样也不影响。或在tarckinglayer上画一次。作为geoevent 加入。不过要先加个图层,要是可以。可能要想建个空图层。设置好投影坐标系后在将点数据写入数据表。做为图层显示。呵呵。这是我个学习的一天认识,有什么不足。<IMG src="http://www.gisempire.com/bbs/Skins/Default/emot/em03.gif">请原谅。</P> |
|
4楼#
发布于:2005-12-25 18:56
<P>我的代码:</P>
<P>Dim db As Database<BR>Dim recset As Recordset<BR>Dim fiex As Field, fiey As Field<BR>Dim pts As New MapObjects2.Points</P> <P>Dim pt As New MapObjects2.Point</P> <P><BR>Private Sub Command1_Click()<BR>Dim ptmp As New MapObjects2.Point<BR>Dim fullfile As String<BR></P> <P>CommonDialog1.Filter = "Access数据库 (*.mdb) | *.mdb"<BR>CommonDialog1.DialogTitle = "选择数据文件"<BR>CommonDialog1.ShowOpen</P> <P>If CommonDialog1.FileTitle = "" Then Exit Sub<BR>fullfile = Trim(CommonDialog1.FileName)</P> <P>Set db = OpenDatabase(fullfile, False, False)<BR>Set recset = db.OpenRecordset("dxdcbd", dbOpenTable)<BR>Set fiex = recset.Fields("横座标")<BR>Set fiey = recset.Fields("纵座标")</P> <P>recset.MoveFirst<BR>While Not recset.EOF<BR> List1.AddItem (fiex.Value)<BR> List2.AddItem (fiey.Value)<BR> ptmp.X = Val(fiex.Value)<BR> ptmp.Y = Val(fiey.Value)<BR> pts.Add pt<BR> recset.MoveNext<BR>Wend</P> <P>Map1.TrackingLayer.Refresh True<BR>End Sub</P> <P>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</P> <P><BR>Private Sub Map1_AfterTrackingLayerDraw(ByVal hDC As stdole.OLE_HANDLE)<BR>Dim syl As New MapObjects2.Symbol</P> <P><BR>With syl<BR> .SymbolType = moPointSymbol<BR> .Color = moRed<BR> .Size = 1<BR>End With</P> <P>Map1.DrawShape pts, syl</P> <P>End Sub</P> <P>这个程序中我直接用坐标画点,在实验中,我也曾用FromMapPoint方法获得这些坐标的屏幕坐标,在用DrawShape方法画点,结果也看不到。这个程序即没有新建图层,也没有用到投影,是不是和这个有关系啊?</P> <P>求大家帮帮我!!!!</P><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /> |
|
5楼#
发布于:2005-12-26 12:03
<P>我尝试过了.作为EVENT 可以加入TACKINGLAYER层</P>
<P>.不过还是要设置一下MAP控件的坐标范围,否则显示不出来</P> |
|
6楼#
发布于:2005-12-26 12:13
<P>楼上的大哥有没有简单的代码啊?有的话贴上来好不好</P>
<P>谢谢了!</P> <P>还有怎么设置Map控件的坐标范围啊?</P> <P>求教!!!!</P><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /> |
|
7楼#
发布于:2005-12-26 15:45
<P>不要急</P>
<P>,我晚上给你</P> |
|
8楼#
发布于:2005-12-26 19:30
<P>搞出来了</P>
<P> ptmp.X = Val(fiex.Value)/ 横坐标最大数值还多点</P> <P>ptmp.Y = Val(fiey.Value/纵坐标最大数值还多点</P> <P>可以显示了</P> |
|
9楼#
发布于:2005-12-26 23:34
<P>我试过了</P>
<P>显示是可以显示,但是由于坐标做除法运算后差得很小</P> <P>导致它们在地图上要放大很多倍才能分得开,而且和实际的坐标数据也无法对应</P> <P>感觉有些美中不足 </P> <P>可以改进吗?真挚的感谢献给亲爱的zpgis2002</P> <img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /> |
|
上一页
下一页