资源描述:
《mapbasic常见问题及解答》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MapBasic----常见问题解答1.MapBasic的程序在Professional下调试完成,如何移植到Runtimes上?l利用mapbasic开发的Professional环境下的应用程序,要运行在runtime环境下,应当在你的程序中增加MenuBarShow命令,以使你的应用程序的菜单显示出来。在利用其它语言如,VisualBasic,VisualC++,Delphi等以OleAutomation方式开发应用程序时,MapinfoProfessional环境下的程序要运行在MapinfoRuntime环境下,应当将创建Mapinfo对象的语句重写,以VisualBasi
2、c为例,在MapinfoProfessional环境下:DimMapinfoasobjectSetMapinfo=Createobject("Mapinfo.Application")在MapinfoRuntime环境下:DimMapinfoasobjectSetMapinfo=Createobject("Mapinfo.Runtime").2.为什么我在MapBasic程序中利用Commandinfo(CMD_INFO_X)和Commandinfo(CMD_INFO_Y)获得的点击处的经纬度坐标值,其小数点后总是4位,如何才能提高其精度?l你可以利用Format$(CommandI
3、nfo(CMD_INFO_X),",#.######")Format$(CommandInfo(CMD_INFO_Y),",#.######")将坐标精度提高到小数点后6位。3.如何创建字体?l创建字体的语句如下:CreateTextintoWindowFrontwindow()"Hello!"(10,10)(20,20)FontMakeFont("Helvetica",1,12,BLACK,WHITE)上句中,12指所要创建的字体的大小,(x,y)指定字符串的左下及右上角位置。将来显示出来的字符的实际大小只由(x,y)来控制。4.如何改变地图单位?lcommandinfo()和ob
4、jectgeography()都可用来获取当前地图窗口中的特定点的坐标,但是对于非地球投影的地图应当注意一个问题:如果当前地图为地球投影则两个函数获取的为经纬度坐标,其与statusbar上显示的坐标一致。但当前地图为非地球投影时,则应当利用:setcoordsysnonearthunits"m"bounds(0,0)(10,10)来设置当前地图的投影,否则利用上述的两个函数时会得出不正确的坐标信息。另外,还要注意的另一个问题是:commandinfo()只能用在用户自己定义的过程中,不能用在Mapinfo的系统过程中(例如,Selchangedhandler()),否则得到的并不是
5、坐标信息,而是该对象在数据库中的记录号。但objectgeography()却没有此问题。5.如何设置窗口投影与坐标体系?l仅以无大地坐标为例:在程序中必须使用下面的语句:SetCoordSysNonEarthUnits"m"Bounds(0,0)(1000,120)它是设置MapBasic编程的坐标系的。6.如何利用几个点来绘制折线?l利用CreatePlinestatement是可以解决您的问题的。例句如下。CreatePlineintowindowfrontwindow()5(10,20)(20,10)(20,30)(40,60)(50,70)7.如何利用Mapbasic实现选
6、择多个区域?l这个问题我想很简单,选择区域和选择点、线等地物对象是一样的。只要有多个区域同时满足相同的条件,则一条选择语句自然会将所有满足该条件的区域都选中。例如,Select*fromChinawhereTotal_Pop_Proj>=30000000会将所有人口数大于等于30000000的城市全部先选中。8.如何利用Mapbasic实现动态改变数组的大小?dima(10)asintegerfori=1to10a(i)=inextredima(20)fori=11to20a(i)=inext9.如何实现选择区域内的所有对象的选择?lSelect*fromtablewhereobjw
7、ithin(selectobjfromtable)说明:table是所要选择的地物对象所在的表,table是新创建的选择工具所在的表。10.如何让数据库在找到一条记录后,停止搜索?用户自己建立了一个Mapinfo表,其中存储了一万多个常用汉字的编码(按照汉语拼音的顺序进行编码)。想利用select语句来对给定的任意汉字搜索其编码,但当要搜索的汉字很多时,用户发现其速度很慢。能否有什么办法让Mapinfo在找到某个汉字的编码之后,即停止对数据库的遍历。l这个