VB+MAPX轨迹回放的一段程序(画点画不出来)

问题描述

这是我做轨迹重放的一段程序,本来是要批量输入数据画轨迹,可是在地图上显示不出来,改为画一个点,去掉很多细节也画不出来,程序如下,请大家多多指教:DimXAsDoubleDimYAsDoublePrivateSubBL_Click()CallGPStrackplayEndSubPrivateSubGPStrackplay()DimlyrAsMapXLib.LayerForEachlyrInMap1.LayersIflyr.Name="temtracklayer"ThenMap1.Layers.RemovelyrEndIfNextSetlyr=Map1.Layers.CreateLayer("tmpTrackLayer")'创建轨迹图层SetMap1.Layers.AnimationLayer=lyr'将轨迹图层设为动态图层DimTrackFtrAsMapXLib.FeatureDimpntAsNewMapXLib.PointSetlyr=Map1.Layers.Item("tmpTrackLayer")'通过名称获取图层CallBLtoXYpnt.SetX,Y'读取数组中的经纬度数据SetTrackFtr=Map1.FeatureFactory.CreateSymbol(pnt)'创建点图元lyr.AddFeatureTrackFtr'将点图元添加到轨迹图层EndSubPrivateSubBLtoXY()'经纬度BL换算到高斯平面直角坐标XY,6°分带法'c2以度小数形式输入纬度值,北纬39度54分20秒,输入39.5420'd2以度小数形式输入经度值,东经116度23分29秒,输入116.2329's2计算结果,横坐标x't2计算结果,纵坐标y'投影带号计算 n=[d2/6]+1如:测得经度103.xxxx,故n=[103.x/6]+1=17+1=18'中央经线经度 a2=n*6-3=[c2/6]*6+3Dima2AsDoubleDimb2AsDoubleDimc2AsDoubleDimd2AsDoubleDime2AsDoubleDimf2AsDoubleDimg2AsDoubleDimh2AsDoubleDimi2AsDoubleDimj2AsDoubleDimk2AsDoubleDiml2AsDoubleDimm2AsDoubleDimn2AsDoubleDimo2AsDoubleDimp2AsDoubleDimq2AsDoubleDimr2AsDoubleDims2AsDoubleDimt2AsDoubleDimiAsIntegerc2=Val(txtLat.Text)d2=Val(txtlon.Text)a2=Int(d2/6)*6+3'把a2化成度,dddmmmm(先算7位)b2=Int(a2)+(Int(a2*100)-Int(a2)*100)/60+(a2*10000-Int(a2*100)*100)/3600'将c2,d2化成度,e2=Int(c2)+(Int(c2*100)-Int(c2)*100)/60+(c2*10000-Int(c2*100)*100)/3600f2=Int(d2)+(Int(d2*100)-Int(d2)*100)/60+(d2*10000-Int(d2*100)*100)/3600g2=f2-b2h2=g2/57.2957795130823'经度差化为了弧度i2=Tan(e2/57.2957798130823)j2=Cos(e2/57.2957798130823)k2=0.006738525415*j2*j2l2=i2*i2m2=1+k2n2=6399685.9018/Sqr(m2)o2=h2*h2*j2*j2p2=i2*j2q2=p2*p2r2=(32005.78006+q2*(133.92133+q2*0.7031))s2=6367558.49686*e2/57.29577951308-p2*j2*r2+((((l2-58)*l2+61)*o2/30+(4*k2+5)*m2-l2)*o2/12+1)*n2*i2*o2/2'计算结果,横坐标,xt2=((((l2-18)*l2-(58*12-14)*k2+5)*o2/20+m2-l2)*o2/6+1)*n2*(h2*j2)t2=t2+(Int(d2/6)+1)*1000000+500000'计算结果,纵坐标,y,加上"带号"和"东移"500KMX=s2Y=t2EndSub

解决方案

解决方案二:
程序有调试过么?你可以定位下是不是画的时候点没有写进去,还是啥原因?
解决方案三:
看看你用来画点的图层有没有设置坐标体系和边界范围指定一下坐标体系
解决方案四:
lyr.AddFeatureTrackFtr'将点图元添加到轨迹图层这个之后要update一下!应该就可以了
解决方案五:
对了,同时把地图中心移动到该点,别画到屏幕外
解决方案六:
绘制位置还有刷新

时间: 2025-01-21 19:05:18

VB+MAPX轨迹回放的一段程序(画点画不出来)的相关文章

new-这段程序怎么修改?为什么没有输出结果?

问题描述 这段程序怎么修改?为什么没有输出结果? int[] iArrary = new int[] { 1, 5, 13, 6, 10, 55, 99, 2, 87, 12, 34, 75, 33, 47 }; for (int i = 0; i < iArrary.Length; i++) { for (int j =i+1; j < iArrary.Length; j++) { if (iArrary[i]>iArrary[j]) { int temp = iArrary[i];

面向对象-请问这段程序的输出是什么 为什么

问题描述 请问这段程序的输出是什么 为什么 public class Test { public static void main(String[] args) { Animal a = new Dog(); a.syaHi(); Animal b = new Bulldog(); b.syaHi(); Dog dog = (Dog)b; dog.syaHi(); check(dog); Bulldog bulldog = (Bulldog)b; check(bulldog); } public

输出-求用c语言编写这么一段程序

问题描述 求用c语言编写这么一段程序 1.用随机产生n个整数,赋给a数组 2.从小到大排序 3.计算最小数的阶乘 4.输出数组内容 解决方案 这个不难,就是先随机n个数放到数组再对数组排序,然后对数组第一个数求阶乘输出,最后输出整个排序过的数组,一步步来很简单 解决方案二: 参考代码段:https://github.com/707wk/Senior-middle-school/blob/master/Filling%20in%20the%20gaps.c 解决方案三: 你需要什么样的排序方式?最

求大家使用C++编写一段程序,将.dat文件的数据取出,然后放到8个数组中,谢谢!今晚就需要!

问题描述 求大家使用C++编写一段程序,将.dat文件的数据取出,然后放到8个数组中,谢谢!今晚就需要! 具体内容:用VC时候,编写上位机程序,需要将一个我已知的.dat文件的数据取出,隔8个点放到1个数组里,这样就将数据分到8个数组中了,需要在void CtestDlg::OnPaint()下面进行操作,把.dat数据取出.根本不懂啊,求指点 解决方案 没办法通过.dat后缀这个信息知道你的文件格式.再说你也根本不懂,建议还是去威客网站雇一个人帮你.

vb.net 被任务管理器强制关闭的程序触发什么事件?或者如何定义这种事件?谢谢

问题描述 vb.net 被任务管理器强制关闭的程序触发什么事件?或者如何定义这种事件?谢谢 如题,vb.net环境,程序被任务管理器强制关闭时触发什么事件?或者如何定义这种事件?谢谢 解决方案 杀进程没有任何事件,关闭程序触发queryclose closing closed 解决方案二: 强制关闭只能hook API来获取,NtTerminateProcess

求助,已知二叉树前序终序号求后序的下面这段程序的递归部分的意义,看不懂啊

问题描述 求助,已知二叉树前序终序号求后序的下面这段程序的递归部分的意义,看不懂啊 public class Solution { public TreeNode reConstructBinaryTree(int [] pre,int [] in) { TreeNode root=reConstructBinaryTree(pre,0,pre.length-1,in,0,in.length-1); return root; } //前序遍历{1,2,4,7,3,5,6,8}和中序遍历序列{4,

请问VB 6.0中怎么才能实现程序图标的拖动

问题描述 请问VB 6.0中怎么才能实现程序图标的拖动 请问VB 6.0中怎么才能实现程序图标的拖动,添加程序到程序收纳盒的功能,并且可以执行这个程序? 解决方案 可以在你的窗体的oledrogover事件里接收你收到的文件.

c语言-这段程序问题在哪里,编译后的结果让我很费解

问题描述 这段程序问题在哪里,编译后的结果让我很费解 #include #include int main() { float x,y,z,k; char s,q; printf("请输入加油量:n"); scanf("%f",&x); printf("请输入服务类型:n"); printf("a.自己加n"); printf("b.自助加n"); scanf("%c",&

VB语言一个关于字符串组合的程序

问题描述 VB语言一个关于字符串组合的程序 这样的数字构成的字符串在VB中怎么穷举? 12*5* 输出12051 12052 ... 12959 解决方案 for i = 0 to 9 for j = 0 to 9 print "12" & i & "5" & j next next