阅读:3972回复:7
vb+MapX标注问题?
我想实现在地图上对商店、学校等一些地点进行标注并记载与之相关的信息如地址、电话
|
|
1楼#
发布于:2007-11-28 14:29
<P>不好意思,没写完就提交了。下面继续。<BR>请问这样功能怎么实现,最好提供代码谢谢!</P>
|
|
2楼#
发布于:2007-11-28 15:37
怎么没人会吗,这是电子地图基本的功能,还请高手帮忙呀。<img src="images/post/smile/dvbbs/em01.gif" />
|
|
3楼#
发布于:2007-11-29 16:07
<P>同问?</P>
|
|
4楼#
发布于:2007-11-29 17:15
*** 标注的方式有以下几种: <BR>自动标注。Map1.Layers("label").AutoLabel = True <BR>删除时: Map1.Layers("label").AutoLabel = False <BR>2. 用户自定义标注。鼠标点击方式:Map1.CurrentTool = miLabelTool <BR>输入坐标方式:LabelAtPoint (x, y) <BR>删除时: Map1.Layers("label").ClearCustomLabels <BR>但是,鼠标点击位置以及(x,y)坐标值需要在点上,线上,面上。 <BR>3. 在drawuserlayer上自己画。 <BR>注意: <BR>1.通过LabelProperties可以定义作标注的字段以及标注样式。 <BR>但是要注意首先要将图层加入到Datasets中。使用程序如下: <BR> <BR>Dim DS As Dataset <BR>Dim Temp As MapXLib.Field <BR>Dim lbp As MapXLib.LabelProperties <BR>Dim lyr As MapXLib.Layer <BR>Set lyr=map1.layers.item(1) <BR>Set DS = Map1.Datasets.Add(6,lyr) <BR>Set lbp = DS.Layer.LabelProperties <BR>Set lbp.Dataset = DS <BR>Set Temp = DS.Fields("GEOname") '设置标注字段 <BR>Set lbp.DataField = Temp <BR>lbp.Visible = True <BR>lbp.Position = miPositionBC <BR>lbp.Overlap = True <BR>lbp.Offset = 5 <BR>lbp.LineType = 2 <BR>Map1.Layers("label").AutoLabel = True <BR>2.用Dataset对象的AddField方法来创建用于标注的表达式。 <BR>3.注意Layer.DrawLayerAfter的使用。
|
|
5楼#
发布于:2007-11-30 10:31
<P><STRONG><FONT face=Verdana>echo2003你好,谢谢你的帮助<br>我想完成的是用户使用工具栏上的添加标注点工具在地图上进行标注<br>弹出标注信息窗体添写标注信息,并在地图上显示,添加标注信息根据用户的输入的内容<br>进行记录,我想新建个永久图层标注点图层用户添加的所有标注点都记录这个图层,图层<br>的字段不确定,根据用户输入的来定,有可能多,有时减少,改变、删除</FONT></STRONG></P>
<P><STRONG><FONT face=Verdana color=#da2549>请问你这样的功能怎么解决,还有我想改变标注点的图标换成自定义的图标怎么做,</FONT></STRONG></P> <P><STRONG><FONT face=Verdana>谢谢!</FONT></STRONG></P> <P><STRONG><FONT face=Verdana color=#da2549></FONT></STRONG></P> <P><STRONG><FONT face=Verdana color=#da2549></FONT></STRONG></P> <P><STRONG><FONT face=Verdana color=#da2549></FONT></STRONG></P> <P><STRONG><FONT face=Verdana color=#da2549></FONT></STRONG></P> <P><STRONG><FONT face=Verdana color=#da2549></FONT></STRONG></P> [此贴子已经被作者于2007-11-30 10:32:22编辑过]
|
|
6楼#
发布于:2008-01-10 09:22
<P> Dim flds As New MapXLib.Fields<BR> Dim lyrNew As MapXLib.Layer<BR> Dim ptNew As New MapXLib.Point<BR> Dim ftrNew As MapXLib.Feature<BR> Dim ff As MapXLib.FeatureFactory<BR> Dim li As New MapXLib.LayerInfo<BR> Dim rvs As New MapXLib.RowValues<BR> Dim ds As MapXLib.Dataset<BR> Dim fso As Object<BR> filepath = App.Path + "\Maps"<BR> Set fso = CreateObject("Scripting.FileSystemObject")<BR> Set ff = Form1.Map1.FeatureFactory<BR> If fso.FileExists(filepath + "\标注点.tab") Then</P>
<P> Else<BR> flds.AddStringField "Name", 50<BR> flds.AddStringField "City", 50<BR> flds.AddStringField "State", 2<BR> flds.AddNumericField "Order_Amt", 12, 2</P> <P> '创建永久图层<BR> li.Type = miLayerInfoTypeNewTable<BR> li.AddParameter "FileSpec", filepath ; "\标注点.tab"<BR> li.AddParameter "Name", "标注点"<BR> li.AddParameter "Fields", flds<BR> Form1.Map1.Layers.Add li, 1 <BR> <BR> End If<BR> <BR> Set lyrNew = Form1.Map1.Layers.Item("标注点")'这句话出错找不到<BR> Set ds = Form1.Map1.DataSets.Add(miDataSetLayer, lyrNew)<BR> Set rvs = ds.RowValues(0)</P> <P> rvs.Item("Name").Value = Text1.Text<BR> rvs.Item("City").Value = "sd"<BR> rvs.Item("State").Value = "ds"<BR> rvs.Item("Order_Amt").Value = "12.56" <BR> </P> <P> ptNew.Set MapX, MapY<BR> Set ftrNew = ff.CreateSymbol(ptNew)<BR> Set ftrNew = lyrNew.AddFeature(ftrNew, rvs)<BR> <BR> Unload Me</P> <P>我的思路是创建个永久图层在这个图层上记录标注点的信息</P> <P>不知道这样可行不,还有上面的错误怎么解决谢谢!</P> |
|
7楼#
发布于:2008-01-18 12:35
<P>先检查一下"标注点"图层是否已经加载到MAPX中</P>
|
|