用DELPHI+MAPX如何实现电子地图的“街道选择”? (100分)

  • 主题发起人 主题发起人 yzp
  • 开始时间 开始时间
Y

yzp

Unregistered / Unconfirmed
GUEST, unregistred user!
用DELPHI+MAPX如何实现电子地图的“街道选择”?
 
在MapX中的细节(Feature)(街道也是你图中的一个细节)可以有几种方法‘查找’。
1.用鼠标选择(包括:点选、区域选择等)
将包含街道的图层设置为可见和可选。
将MapX的当前工具设为点选或区域选择。例点选:MapX1.CurrentTool:=miSelectTool;
这样就可以用鼠标“街道选择”。
如果你还需要选中“街道”的详细信息,就在MapX1ToolUsed事件中加
if ToolNum = miSelectTool then
....

先到这里,我有事了。多看MapX的Help和例子
 
续:
ftrsFinds : Features;
pt1 : Point;

pt1 := CoPoint.Create;

if ToolNum = miSelectTool then

begin

pt.Set_(X1, Y1);
ftrsFinds := lyrEditLayer.SearchAtPoint(pt);
end;

ftrsFinds 是你选择到的细节集。ftrsFinds有Count和item(细节)等等

 
能不能使“所选择的街道”变颜色或画线,用来明显区分和说明这就是我所选择了的街道。应该如何做呢?如何实现,请指点!
 
比如说一个城市的公交线路,有起点,有终点,中间还有小站。能不能在地图上用线的形式显示出来,应该如何实现,谢谢指点!
 
用前面的方法就可以选择了,可以使“所选择的街道”变颜色。
所选的街道是由地图数据决定的一个线状图形。如果一个城市的公交线路(有起点,有终点)可能有几条路段组成,所以此时必须使用Find代码实现,用来寻找相关的路段。
你先做一个例子看看。
 
你有没有相关的例子吗?能不能举例说明一下。
 
呵呵,你对MapX太不熟悉了。简单选择只需一句话。
procedure TForm1.Button1Click(Sender: TObject);
begin

MapX1.CurrentTool:=miSelectTool;
end;

条件是包含街道的图层必须为可见和可选。
 
实在不好意思,在刚学习MAPX,有很多不懂,还请关照!
 
想请教一下,如何实现在电子地图自由添加或删除图标(*.ico)?
 
在电子地图上好像不能用图标(*.ico),但可以用位图(可以透明显示)。
 
位图,应该如何做到透明显示?能举例吗?
 
1.The name that you specify should not include a full directory path. The bitmap file must be in the custom symbol directory, currently defined to be:

<path>/CUSTSYMB

where <path> is the path where the MapX Common Files are installed, e.g. C:/Program Files/Common Files/MapInfo Shared/MapXCommon.

2.定义style
var
Bitmaps: BitmapSymbols;
StyleBitmap: Style;
begin

Bitmaps := CoBitmapSymbols.Create;

StyleBitmap := coStyle.Create;
with StyleBitmapdo

begin

// Style.SupportsBitmapSymbols property
SymbolType := miSymbolTypeBitmap;
SymbolBitmapTransparent := True;
SymbolBitmapSize := 24;//位图大小
SymbolBitmapName := Bitmaps.Item(BmpFileNo).Name;//BmpFileNo是位图编号
end;

end;

3.画
var
Newobj : Feature;
pt : Point;
begin

pt =: coPoint.create;
pt.Set_(mLongitude, mLatitude);//mLongitude, mLatitude你的地图位置
Newobj := MapX.FeatureFactory.CreateSymbol(pt, StyleBitmap);
Newobj.KeyValue := 'Symbol';//你的标注
Newobj:= lyrEditLayer.AddFeature(NewObj, EmptyParam);//lyrEditLayer是你所要画的图层
end;
 
谢谢,我试试,对了,你有QQ吗?还有呀,我说的SQL SERVER 2000数据库如何进行数据邦定?
 
QQ号去了,省的老挂着
我平时比较忙,最近放假嘛
 
加我吧,我发了消息,我的QQ:29765025
 
后退
顶部