10楼#
发布于:2004-09-09 15:37
<P>请问楼上的:你的这段代码是关于MO的吗?我怎么找不到OnAfterDraw这个事件啊?</P><P>谢谢你的回复</P><P>以下代码:</P><P>Dim pt As MapObjects2.Point
Dim tl As MapObjects2.TrackingLayer Private Sub sRePlay() Dim lngLoop As Long Dim bCenter As Boolean bCenter = False For lngLoop = 1 To lngRecAll - 1 If bUnload Then Exit Sub Seek #ihFile, cTestPLFileHeaderLen + 1 + cTestPLFileRecordLen * (lngLoop) Get #ihFile, , wDataWdd With wDataWdd mNowdblLon = Val(.Lon) mNowdblLat = Val(.Lat) labInfo = "经度:" + .Lon + "--纬度:" + .Lat If mNowdblLon <> 0 And mNowdblLat <> 0 Then If Not bCenter Then moMain.CenterAt mNowdblLon, mNowdblLat bCenter = True End If Set pt = New MapObjects2.Point pt.x = mNowdblLon pt.y = mNowdblLat tl.AddEvent pt, 0 End If End With DoEvents Next Close #ihFile End Sub</P><P>在加载了地图文件(shp类型)后可以正常画出GPS所走的轨迹,但如果没有加载地图,也就是说MO上没任何图层的话,就不能画出轨迹,请问要如何做?</P><P>我用MAPX开发的话,不加载任何地图文件也一样可以画出GPS所走的轨迹,但现在用MO就不知要如何做了</P> |
|
11楼#
发布于:2004-09-10 18:35
<P>这也是我正要问的问题。关注。</P><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em07.gif" /><img src="images/post/smile/dvbbs/em08.gif" />
|
|
12楼#
发布于:2004-09-12 17:01
<DIV class=quote><B>以下是引用<I>ZHYP</I>在2004-9-8 15:39:04的发言:</B>
<P>是在trackinglayer上画,但不知该怎么做。</P> <P>我用tomappoint函数转换了经纬度,但画的点在MO上要么显示不出来,要么就是都显示在左上角上,不能显示成一条GPS行走的轨迹路线</P> <P>如果我加载了地图后,不用tomappoint函数就可以直接用经纬度画点并在地图上相应位置上显示</P> <P>请问这要如何解决?</P> <P>谢谢各位的答复</P></DIV> <P>点都显示在左上角会不会是因为你的地图文件没有地理位置配准?</P> |
|
13楼#
发布于:2004-09-13 09:33
<P><b><FONT color=#000066>seava</FONT></b></P><P>点都显示在左上角会不会是因为你的地图文件没有地理位置配准?</P><P>我都没加载地图文件,当然是没有地理位置配准之说了。</P><P>我了解到的解决方法是:在没有地图文件时要经过坐标转换处理,但我对坐标转换不知该如何做,需要选择什么样的坐标系进行相互转换?</P>
|
|
14楼#
发布于:2004-09-13 14:10
<P>支持,希望斑竹和高手能够关注此问题。给予解答。</P><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em07.gif" /><img src="images/post/smile/dvbbs/em08.gif" />
|
|
15楼#
发布于:2004-09-14 13:22
<P><b><FONT color=#000066>wangjunjolly</FONT></b></P><P><b><FONT color=#000066>谢谢你的大力支持!</FONT></b></P><P><b><FONT color=#000066>请各位MO高手帮帮忙,指点指点</FONT></b></P>
|
|
16楼#
发布于:2004-09-14 22:30
<P>参考帮助中的信息</P><P>定义 point 和 geoevent</P><P>point = map1.tomappoint(经度 , 纬度)</P><P>map1.tracklayer.addevent(geoevent, symbol)</P><P>geoevent.x = point.x</P><P>geoevent.y = point.y</P><P>然后循环得到 point 的坐标 使用 geoevent 的 moveto 方法</P><P>point = map1.tomappoint(经度 纬度)</P><P>geoevent.moveto(point.x,point.y)</P><P>友情提示 geoevent 有 tag 属性 可以存放字符串 帮助程序的编写</P><P>关键是 mo 还支持搜索该属性呢 :)</P>
|
|
17楼#
发布于:2004-09-15 09:47
<P><b><FONT color=#000066>zhangkaicn:</FONT></b></P><P><b><FONT color=#000066>我用了你提到的geoEvent和MoveTo,都不行啊。</FONT></b></P><P><b><FONT color=#000066>能不能帮我写个完整点的代码帖出来啊?谢谢!!!!!!</FONT></b></P>
|
|
18楼#
发布于:2004-09-15 11:45
<P>自己想了一个解决方法:</P>
<P>Dim pt As MapObjects2.Point Dim tl As MapObjects2.TrackingLayer Private Sub sRePlay()</P> <P> ihFile = FreeFile Open App.Path + "\覆盖.wdd" For Binary As #ihFile Dim curDbfHead As tDbfHead Seek #ihFile, 1 Get #ihFile, , curDbfHead lngRecAll = CLng(curDbfHead.recordno) bUnload = False Dim lngLoop As Long Dim bCenter As Boolean bCenter = False mOlddblLon = 0: mOlddblLat = 0 If moMain.Layers.Count > 0 Then For lngLoop = 0 To moMain.Layers.Count - 1 If moMain.Layers(lngLoop).Name = "tmpShp" Then moMain.Layers.Remove lngLoop End If Next End If For lngLoop = 1 To lngRecAll - 1 If bUnload Then Exit Sub Seek #ihFile, cTestPLFileHeaderLen + 1 + cTestPLFileRecordLen * (lngLoop) Get #ihFile, , wDataWdd With wDataWdd mNowdblLon = Val(.Lon) mNowdblLat = Val(.Lat) labInfo = "经度:" + .Lon + "--纬度:" + .Lat If (mNowdblLon <> 0 And mNowdblLat <> 0) And (mNowdblLon <> mOlddblLon Or mNowdblLat <> mOlddblLat) Then Set pt = New MapObjects2.Point pt.x = mNowdblLon pt.y = mNowdblLat If Not bCenter Then '***根据取得的第一个经纬度生成一个shp文件并加载该文件**</P> <P> '***此时就相当于加载了地图,使得MO有了相应的坐标系** Dim dc As New MapObjects2.DataConnection Dim mlyrNew As New MapObjects2.MapLayer Dim gdsNew As MapObjects2.GeoDataset Dim tdesc As New MapObjects2.TableDesc With tdesc ' define three additional fields .FieldCount = 3 'set the field names .FieldName(0) = "Name" .FieldName(1) = "LON" .FieldName(2) = "LAT" ' set the type of field .FieldType(0) = moString .FieldType(1) = moDouble .FieldType(2) = moDouble ' set the length of a character field .FieldLength(0) = 20 ' set the number of digits used in the field .FieldPrecision(1) = 12 .FieldPrecision(2) = 12 ' set the number of digits to the right of the decimal point .FieldScale(1) = 6 .FieldScale(2) = 6 End With dc.Database = App.Path dc.Connect 'Create new empty shapefile Set gdsNew = dc.AddGeoDataset("tmpShp", moShapeTypePoint, tdesc) Set mlyrNew.GeoDataset = gdsNew mlyrNew.Symbol.SymbolType = moPointSymbol mlyrNew.Symbol.Style = moCircleMarker mlyrNew.Symbol.Color = moWhite mlyrNew.Symbol.Outline = False mlyrNew.Symbol.Size = 1 Dim recs As MapObjects2.Recordset Set recs = mlyrNew.Records recs.AutoFlush = False '************************************************************************************** recs.AddNew recs.Fields("Name").Value = "GPS" recs.Fields("LON").Value = pt.x recs.Fields("LAT").Value = pt.y recs.Fields("shape").Value = pt recs.Update recs.StopEditing moMain.Layers.Add mlyrNew moMain.Refresh '************************************************************************************** Dim oRect As MapObjects2.Rectangle Set oRect = moMain.Extent oRect.ScaleRectangle (0.1) moMain.Extent = oRect</P> <P> moMain.CenterAt pt.x, pt.y bCenter = True End If '********************************************* Dim tX As Single, tY As Single moMain.FromMapPoint pt, tX, tY If (tX > (moMain.Width - 10)) Or (tY > (moMain.Height - 10)) Or tX < 0 Or tY < 0 Then moMain.CenterAt pt.x, pt.y End If '********************************************* tl.AddEvent pt, 0 mOlddblLon = mNowdblLon mOlddblLat = mNowdblLat End If End With DoEvents Next Close #ihFile End Sub </P> [此贴子已经被作者于2004-9-15 14:33:04编辑过]
|
|
19楼#
发布于:2004-09-15 14:36
谢谢曾经关注过此帖的朋友,关于此帖的问题基本上解决了,如果各位还有更好的解决方法,请多多指教
|
|
上一页
下一页