一个WebGIS平台,最基本的功能就是根据地图查询要素的详细属性信息。MapGuide作为一个WebGIS平台当然也不例外。在MapGuide的基本网页布局Ajax Viewer中,点击地图上的地物,…

一个WebGIS平台,最基本的功能就是根据地图查询要素的详细属性信息。MapGuide作为一个WebGIS平台当然也不例外。在MapGuide的基本网页布局Ajax Viewer中,点击地图上的地物,属性信息即可显示在Properties窗口中,灵活网页布局也同样提供的属性显示窗口Widget。点一下虽然比较不费力,当有没有更省力的办法呢?其实我有腱鞘炎,一下鼠标都不想点,要是鼠标放那儿停一会儿,信息自己蹦出来就好了~~  说我懒也就罢了,其实还有更重要的,MapGuide自带的属性显示功能只能显示数据源中的字段信息,虽然可以通过数据源的Join功能连接到后台其他数据库等资源,但是要能给我个ID自己控制多好,有了这个地物ID我想干啥干啥,那有多爽?! 这在MapGuide里能行吗?

答案是,当然!我发现MapGuide的一个很大的好处就是开放性,不但能直接访问各种数据格式,还提供了开放式的定制方式。上面的问题我们用ToolTip功能就能搞定了。下面我们做一个简单的例子,来实现一个常见的任务,即鼠标指向某个地物时,弹出浮动窗口显示地物的详细信息。这些详细信息可以是从数据源中获取,也可以从其他外部数据源中如数据库中获取。

 

在MapGuide Studio中可以设定图层的ToolTip,即当鼠标悬停在地物上方时弹出气泡式浮动窗口显示相关信息。

image

ToolTip的设定可以通过Expression Builder进行设定。通过Expression Build不但可以使用很多文本处理函数、数学处理函数等,还可以使用Geomtric相关函数,而且可以方便的获取数据源中的相关信息。如图中显示的是数据源中的相关字段,如果我们需要在ToolTip中显示数据源中已有字段的信息,通过Expression Build即可很方便的完成。

image

一般数据源中都会有FeatureID这样的字段,当数据源中可能不能包含其他的信息,更详细的信息可以存储到外部数据库中,甚至需要由FeatureID连接到其他ERP、CRM等外部系统中获取。这时我们只需取得featureID并连接到自定义页面中,在该自定义页面中完成数据集处理工作即可。

ToolTip内容可以包含任何HTML标签,我们把一个IFranme嵌入到ToolTip中即可把信息页面集成进来了。

 

concat(\'Parcel\nName: \', RNAME, 
\'\nAddress: \', RBILAD,\'
\nfeatid:\', Autogenerated_SDF_ID ,
\'\n<iframe width=500 height=500 src= http://localhost/WebcastDemo/MapInforrmation.aspx?MyFeatID=\', Autogenerated_SDF_ID ,\'></iframe>\')

.csharpcode, .csharpcode pre { font-size: small; color: rgba(0, 0, 0, 1); font-family: consolas, “Courier New”, courier, monospace; background-color: rgba(255, 255, 255, 1) }
.csharpcode pre { margin: 0 }
.csharpcode .rem { color: rgba(0, 128, 0, 1) }
.csharpcode .kwrd { color: rgba(0, 0, 255, 1) }
.csharpcode .str { color: rgba(0, 96, 128, 1) }
.csharpcode .op { color: rgba(0, 0, 192, 1) }
.csharpcode .preproc { color: rgba(204, 102, 51, 1) }
.csharpcode .asp { background-color: rgba(255, 255, 0, 1) }
.csharpcode .html { color: rgba(128, 0, 0, 1) }
.csharpcode .attr { color: rgba(255, 0, 0, 1) }
.csharpcode .alt { background-color: rgba(244, 244, 244, 1); width: 100%; margin: 0 }
.csharpcode .lnum { color: rgba(96, 96, 96, 1) }

 

这个例子把ID信息传递到MapInforrmation.aspx,在这个页面中进行相关处理。在这个页面中接受到要素ID就可以通过ADO.NET等通用数据库技术访问数据库,或者访问其他CRM、ERP等外部数据了。

image

在Flexible WebLayout中通用适用。

image

 

在此只是抛砖引玉,只要大家有新想法,其实MapGuide可以很好的和您的现有系统融合,增加更生动丰富的表现形式和功能。嗯,是不是有种世界尽在掌握的感觉? :)

 

延伸阅读:

MapGuide/Map 3D 2011中Expression Builder中Concat的改进

MapGuide/Map 3D 2011中的Expression Builder是个很有用的工具,比如我们经常需要为图层设置ToolTip,URL连接,或者构造过滤字符串,这时都可以用可视化的Expression Builder来生成表达式。 点击右边的按钮即可激活Expression…

 

给MapGuide Open Source的ToolTip加点料

Studio中图层编辑器中,点”Tooltip displayed for Feature”后面的按钮调出…关系,你可以在tooltip里面任意加入你需要的html标签了,是不是很酷? J…

 

利用MapGuide Open Source的ToolTip做专题图

ToolTip加点料, 这篇文章讲述了如果在MapGuide ToolTip中加入图片,后来无意中看到了… tooltip expression for the Parcels layer would be…但总比没有强些 🙂 这只是个引子,注意到ToolTip中只是个HTML,其实只要你有想象力,可以放任…

版权声明:本文为junqilian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/junqilian/p/1845217.html