Welcome

首页 / 软件开发 / .NET编程技术 / SharpMap学习(2)

SharpMap学习(2)2011-11-06 博客园 GodSpeed在经过第一篇的简单学习之后,我们开始了解一些稍微有点儿意思的东西,进一步掌握和学习利用 sharpmap进行开发的技巧。

这次,我们主要是跟大家一起学习一下如何根据地图上的一个点,来查询这个点所在的对象的信息, 并显示到点击的位置。这非常有用,比如说一个想把一个房子显示在地图上,我们用鼠标一点,便知道这 个房子里住的什么人,干什么的,以及其它相关信息。

同样的,我们还是使用sharpmap提供的ajax控件,环境和第一篇一模一样。但是这里,我们要引用一 个叫做NetTopologySuite的类库。它经常和SharpMap一起使用,这次我们只使用其中的一个小部分,废话 不多说,开始做。

这里我们使用asp.net ajax 1.0,首先引用了dll,并且拖上scripmanager并设置为 EnablePageMethods=true,这样我们就可以在页面中写静态方法来实现AJAX。

在MapClicked方法(AjaxMapControl控件提供的方法,直接写在js中即可,表示单击的时候发生一些 事情)中,我们调用我们写的js,根据两个点来返回一个字符串。这个字符串就是拼好的html,直接显示 出来。

function MapClicked(event,obj)    {        var mousePos = SharpMap_GetRelativePosition(event.clientX,event.clientY,obj.container);        var pnt = SharpMap_PixelToMap(mousePos.x,mousePos.y,obj);        var field = document.getElementById("dataContents");        //field.innerHTML = "You clicked map at: " + pnt.x + "," + pnt.y;        GetData(pnt.x, pnt.y);    }
这个方法里面的SharpMap_GetRelatiovePosition和 SharpMap_PixelToMap方法根据鼠标在屏幕上的坐 标计算出鼠标点在地图上的坐标,再调用我们自己写的GetData方法即可。在GetData方法中,我们使用了 PageMethods来调用一个后台方法,并返回一个字符串。

PageMethods.GetData(x, y, GetDataSuccess);