加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SuperMap IS.NET自定义Action之兴趣点标注

发布时间:2020-12-16 19:31:21 所属栏目:百科 来源:网络整理
导读:在SuperMap IS.NET AjaxScripts开发中,提供了一个名为SuperMap.IS.Action.js的脚本文件,供开发人员添加自定义动作。 兴趣点(Point Of Interest)标注算是经常用到的功能,供用户在浏览地图时,对自己感兴趣内容在图上进行标注。 本脚本算是初步完成,提供

在SuperMap IS.NET AjaxScripts开发中,提供了一个名为SuperMap.IS.Action.js的脚本文件,供开发人员添加自定义动作。

兴趣点(Point Of Interest)标注算是经常用到的功能,供用户在浏览地图时,对自己感兴趣内容在图上进行标注。

本脚本算是初步完成,提供文本、点、线和面的标注。代码如下:

  1. //用户自定义兴趣点标注
  2. //title:标注名
  3. //note:备注
  4. //showPic:是否显示logoture/false
  5. //hotpic:logo图片名(包含后缀)
  6. SuperMap.IS.DrawMarkPointAction=function(title,note,showPic,hotpic)
  7. {
  8. this.type="SuperMap.IS.DrawMarkPointAction";
  9. varx=null;
  10. vary=null;
  11. var_showPic=false;
  12. var_hotpic=null;
  13. this.Init=function(mapControl)
  14. {
  15. this.mapControl=mapControl;
  16. if(ygPos.browser=="ie")
  17. {
  18. mapControl.container.style.cursor="images/cursors/PointQuery.cur";
  19. }
  20. else
  21. {
  22. mapControl.container.style.cursor="crosshair";
  23. }
  24. if(showPic!=null)
  25. {
  26. _showPic=showPic;
  27. }
  28. if(hotpic==null)
  29. {
  30. _hotpic="images/hotball.gif";
  31. }
  32. else
  33. {
  34. _hotpic="images/"+hotpic;
  35. }
  36. }
  37. this.Destroy=function()
  38. {
  39. this.mapControl=null;
  40. x=null;
  41. y=null;
  42. }
  43. function_OnClick(e)
  44. {
  45. x=e.mapCoord.x;
  46. y=e.mapCoord.y;
  47. if(_showPic==true)
  48. {
  49. this.mapControl.CustomLayer.AddMark("markPoint",x,y,null,"<div><imgsrc='"+_hotpic+"'style='cursor:pointer'title='"+note+"'/><span>"+title+"</span></div>");
  50. }
  51. else
  52. {
  53. this.mapControl.CustomLayer.AddMark("markPoint","<div><b>"+title+"</b>"+note+"</div>");
  54. }
  55. }
  56. function_OnContextMenu(e)
  57. {
  58. this.mapControl.SetAction(null);
  59. }
  60. function_GetJSON()
  61. {
  62. return_ActionToJSON(this.type,[]);
  63. }
  64. this.OnClick=_OnClick;
  65. this.OnContextMenu=_OnContextMenu;
  66. this.GetJSON=_GetJSON;
  67. }
  68. //用户自定义兴趣线标注
  69. //title:标注名
  70. //note:备注
  71. //showPic:是否显示标注内容
  72. //hotpic:logo图片名(包含后缀)
  73. SuperMap.IS.DrawMarkLineAction=function(title,showLabel,hotpic)
  74. {
  75. this.type="SuperMap.IS.DrawMarkLineAction";
  76. varactionStarted=false;
  77. varkeyPoints=newArray();
  78. varxs=newArray();
  79. varys=newArray();
  80. var_showLabel=false;
  81. var_hotpic=null;
  82. this.Init=function(mapControl)
  83. {
  84. this.mapControl=mapControl;
  85. if(ygPos.browser=="ie")
  86. {
  87. mapControl.container.style.cursor="images/cursors/PointQuery.cur";
  88. }
  89. else
  90. {
  91. mapControl.container.style.cursor="crosshair";
  92. }
  93. if(showLabel!=null)
  94. {
  95. _showLabel=showLabel;
  96. }
  97. if(hotpic==null)
  98. {
  99. _hotpic="images/hotball.gif";
  100. }
  101. else
  102. {
  103. _hotpic="images/"+hotpic;
  104. }
  105. }
  106. this.Destroy=function()
  107. {
  108. this.mapControl=null;
  109. xs=null;
  110. ys=null;
  111. }
  112. function_OnClick(e)
  113. {
  114. if(!actionStarted)
  115. {
  116. keyPoints.push(e.mapCoord);
  117. xs.push(e.mapCoord.x);ys.push(e.mapCoord.y);
  118. actionStarted=true;
  119. }
  120. keyPoints.push(e.mapCoord);
  121. xs.push(e.mapCoord.x);ys.push(e.mapCoord.y);
  122. }
  123. this.OnMouseMove=function(e){
  124. if(!actionStarted){returnfalse;}
  125. keyPoints.pop();
  126. xs.pop();ys.pop();
  127. keyPoints.push(e.mapCoord);
  128. xs.push(e.mapCoord.x);ys.push(e.mapCoord.y);
  129. this.mapControl.CustomLayer.InsertLine(title,xs,ys,2,"blue");
  130. }
  131. function_OnContextMenu(e)
  132. {
  133. if(_showLabel==true)
  134. {
  135. vari=Math.round(keyPoints.length/2)-1;
  136. this.mapControl.CustomLayer.InsertMark("markPoint",xs[i],ys[i],"<div><imgsrc='"+_hotpic+"'style='cursor:pointer'title='"+note+"'/><span>"+title+"</span></div>");
  137. }
  138. this.mapControl.SetAction(null);
  139. }
  140. function_GetJSON()
  141. {
  142. return_ActionToJSON(this.type,[]);
  143. }
  144. this.OnClick=_OnClick;
  145. this.OnContextMenu=_OnContextMenu;
  146. this.GetJSON=_GetJSON;
  147. }
  148. //用户自定义兴趣面标注
  149. //title:标注名
  150. //note:备注
  151. //showPic:是否显示标注内容
  152. //hotpic:logo图片名(包含后缀)
  153. SuperMap.IS.DrawMarkPolygonAction=function(title,hotpic)
  154. {
  155. this.type="SuperMap.IS.DrawMarkPolygonAction";
  156. varactionStarted=false;
  157. varkeyPoints=newArray();
  158. varxs=newArray();
  159. varys=newArray();
  160. varxcenter=0;
  161. varycenter=0;
  162. var_showLabel=false;
  163. var_hotpic=null;
  164. this.Init=function(mapControl)
  165. {
  166. this.mapControl=mapControl;
  167. if(ygPos.browser=="ie")
  168. {
  169. mapControl.container.style.cursor="images/cursors/PointQuery.cur";
  170. }
  171. else
  172. {
  173. mapControl.container.style.cursor="crosshair";
  174. }
  175. if(showLabel!=null)
  176. {
  177. _showLabel=showLabel;
  178. }
  179. if(hotpic==null)
  180. {
  181. _hotpic="images/hotball.gif";
  182. }
  183. else
  184. {
  185. _hotpic="images/"+hotpic;
  186. }
  187. }
  188. this.Destroy=function()
  189. {
  190. this.mapControl=null;
  191. xs=null;
  192. ys=null;
  193. }
  194. function_OnClick(e)
  195. {
  196. if(!actionStarted)
  197. {
  198. keyPoints.push(e.mapCoord);
  199. xs.push(e.mapCoord.x);ys.push(e.mapCoord.y);
  200. actionStarted=true;
  201. }
  202. keyPoints.push(e.mapCoord);
  203. xs.push(e.mapCoord.x);ys.push(e.mapCoord.y);
  204. }
  205. this.OnMouseMove=function(e){
  206. if(!actionStarted){returnfalse;}
  207. keyPoints.pop();
  208. xs.pop();ys.pop();
  209. keyPoints.push(e.mapCoord);
  210. xs.push(e.mapCoord.x);ys.push(e.mapCoord.y);
  211. this.mapControl.CustomLayer.InsertPolygon(title,"blue","white",0.6,1);
  212. }
  213. function_OnContextMenu(e)
  214. {
  215. if(_showLabel==true)
  216. {
  217. //多边形几何中心
  218. varn=keyPoints.length;
  219. for(vari=0;i<n;i++)
  220. {
  221. xcenter+=xs[i]/n;
  222. ycenter+=ys[i]/n;
  223. }
  224. this.mapControl.CustomLayer.InsertMark("markPoint",xcenter,ycenter,"<div><imgsrc='"+_hotpic+"'style='border:0px;cursor:pointer'title='"+note+"'/><span>"+title+"</span></div>");
  225. }
  226. this.mapControl.SetAction(null);
  227. }
  228. function_GetJSON()
  229. {
  230. return_ActionToJSON(this.type,[]);
  231. }
  232. this.OnClick=_OnClick;
  233. this.OnContextMenu=_OnContextMenu;
  234. this.GetJSON=_GetJSON;
  235. }

调用方法:

  1. functionSetCustomMark()
  2. {
  3. varcaption=$("Caption").value;
  4. varremark=$("Remark").value;
  5. vartype=$("mark_type").value;
  6. switch(type)
  7. {
  8. case"text":
  9. SetMarkTextAction(caption,remark);
  10. break;
  11. case"point":
  12. SetMarkPointAction(caption,remark);
  13. break;
  14. case"line":
  15. SetMarkLineAction(caption,remark);
  16. break;
  17. case"polygon":
  18. SetMarkPolygonAction(caption,remark);
  19. break;
  20. default:
  21. break;
  22. }
  23. }
  24. functionSetMarkTextAction(caption,remark)
  25. {
  26. markPointAction=newSuperMap.IS.DrawMarkPointAction(caption,remark,false);
  27. MapControl1.SetAction(markPointAction);
  28. }
  29. functionSetMarkPointAction(caption,true);
  30. MapControl1.SetAction(markPointAction);
  31. }
  32. functionSetMarkLineAction(caption,remark)
  33. {
  34. markLineAction=newSuperMap.IS.DrawMarkLineAction(caption,remark);
  35. MapControl1.SetAction(markLineAction);
  36. }
  37. functionSetMarkPolygonAction(caption,remark)
  38. {
  39. markPolygonAction=newSuperMap.IS.DrawMarkPolygonAction(caption,remark);
  40. MapControl1.SetAction(markPolygonAction);
  41. }

脚本下载地址:http://download.csdn.net/source/591063

还有部分待完善,使自主标注内容能在线保存:)

欢迎提供建议!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读