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);