帮朋友忙,弄一个水利相关的MAP地图查询程序.
功能: 在地图上显示一个城市的地图,点击其中的河流与桥时 会弹出框显示名字和实拍的照片
计划将数据的 查询 与 更改 作成2个程序我以前没接触过GIS相关的东西,有些问题想咨询一下各位前辈
1.这个程序可以用DELPHI+MAPX来开发吗? delphi很熟悉,MAPX以前没接触过
2.地图上的那些桥梁河流信息能在程序完工后,后期输入吗?地图的缩放会不会影响到这些信息点
3.城市地图上的那些河流与桥梁会随着城市建设而发生变化,这个在程序中应该怎么作?(我的意思是指新建一座桥或是新挖一条河,我在地图上怎么处理,也就是说我能在程序完工后更改城市地图吗?实现的难度如何?)这个程序如果要实现C/S结构,那些桥梁的信息可以放在数据库里,局域网使用应该没问题.
最初的城市地图(这个数据量会不会很大?没有什么概念)直接打包安装到客户端,但是后期如果更改地市地图的话,这个该怎么作呢? (直接修改城市地图,客户端下载更新吗? 这个城市地图应该直接以文件的形式保存的吧)
功能: 在地图上显示一个城市的地图,点击其中的河流与桥时 会弹出框显示名字和实拍的照片
计划将数据的 查询 与 更改 作成2个程序我以前没接触过GIS相关的东西,有些问题想咨询一下各位前辈
1.这个程序可以用DELPHI+MAPX来开发吗? delphi很熟悉,MAPX以前没接触过
2.地图上的那些桥梁河流信息能在程序完工后,后期输入吗?地图的缩放会不会影响到这些信息点
3.城市地图上的那些河流与桥梁会随着城市建设而发生变化,这个在程序中应该怎么作?(我的意思是指新建一座桥或是新挖一条河,我在地图上怎么处理,也就是说我能在程序完工后更改城市地图吗?实现的难度如何?)这个程序如果要实现C/S结构,那些桥梁的信息可以放在数据库里,局域网使用应该没问题.
最初的城市地图(这个数据量会不会很大?没有什么概念)直接打包安装到客户端,但是后期如果更改地市地图的话,这个该怎么作呢? (直接修改城市地图,客户端下载更新吗? 这个城市地图应该直接以文件的形式保存的吧)
解决方案 »
- 请问delphi中做菜单栏中的二级菜单怎么做?
- 如何删除Listview中重复的Items.Caption?
- 這樣的報表怎樣實現?
- 我从TEdit派生出的TNumEdit,在控件栏上无法显示。
- 关于ClientSocket1连接的问题(局域网内能正常连接发送数据,interner却不行)
- 控件制作问题?如何为控件自定义属性????难~~~~~~~
- 如何将MIDI文件做在dfm文件中播放
- 对我来说很繁琐的问题(在线等)请坛子的兄弟们给解决一下
- 有没有能做出IE工具栏样式的控件,显示不完的按钮放在最右边的下拉菜单中?(除了Toolbar2000)
- 新手请教:如何处理这个OnDragOver事件?
- 不知道这算不算Delphi的 bug
- 函数返回值类型是Variant,实际上是个已知长度的Array of Double的数组 ,应该怎么办?
2,MapX是个ocx控件,程序在运行时加栽城市地图的
3,新建一座桥或是新挖一条河时可以用mapinfo来修改地图,然后客户端下载更新地图(也可以用数据库)
mapx肯定能 实现。
鼠标移到地图上时,在一座桥上显示桥的虚框(这个虚框是不规则图形,象游戏里一样),会有消息提示(提示这是**桥),单击时会弹出一个panel,显示实拍图片
可以的,我做过相关的. 2.地图上的那些桥梁河流信息能在程序完工后,后期输入吗?地图的缩放会不会影响到这些信息点
可以加标注(要有具体的经纬度),缩放不会影响到,只要你设置好他的属性3.城市地图上的那些河流与桥梁会随着城市建设而发生变化,这个在程序中应该怎么作?(我的意思是指新建一座桥或是新挖一条河,我在地图上怎么处理,也就是说我能在程序完工后更改城市地图吗?实现的难度如何?)
如果你的桥梁是在图层最上方加标注的话,这个可以修改数据库中的经纬度来实现,没有什么难度,如果你要修改地图的话,你学一下MapInfo Professional,可以修改的 我用的是MapInfo Professional 8.5 SCP
procedure TMainForm.MainMapMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var Lon: Double;
lat: Double;
fs:MapXLib_TLB.Features;
pnt:Point;
X_X, Y_Y: Single;
begin
//鼠标移动到桥梁时显示相关数据
if MainMap.CurrentTool = miPanTool then
begin
X_X := X; Y_Y := Y;
MainMap.ConvertCoord(X_X, Y_Y,Lon,lat,miScreenToMap);
pnt := copoint.Create;
pnt.Set_(Lon, lat); fs := MainMap.Layers['QYMAP'].SearchWithinDistance(pnt,200,miUnitMeter,miSearchTypeCentroidWithin);
if fs.Count >0 then
begin
//显示你的Panel过程
ShowYourPanel;
end;
end; //当为测距时
if MainMap.CurrentTool = CUSTOM_RULER_TOOL then RulerToolExecute(X,Y,mbLeft,mmMove);//mbLeft没有实际意义,只是作为参数
end;