addressMatchService.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. <!--********************************************************************
  2. * Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
  3. *********************************************************************-->
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title data-i18n="resources.title_addressMatchService"></title>
  9. <script type="text/javascript" include="bootstrap-css,jquery" src="../js/include-web.js"></script>
  10. <style>
  11. .control {
  12. position: absolute;
  13. top: 50px;
  14. right: 10px;
  15. }
  16. #map {
  17. position: absolute;
  18. }
  19. </style>
  20. </head>
  21. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%">
  22. <div id="map" style="width: 100%;height:100%"></div>
  23. <div id="control" class="control" style='width:20%'>
  24. <div class="panel panel-default">
  25. <div class="panel-body">
  26. <ul class="nav nav-tabs nav-justified">
  27. <li id="geocode" role="presentation" class="active"><a href="#" data-i18n="resources.text_code"></a></li>
  28. <li id="geodecode" role="presentation"><a href="#" data-i18n="resources.text_decode"></a></li>
  29. </ul>
  30. <p></p>
  31. <div class="tab-content">
  32. <div id="geocodeParam" role="tabpanel" class="tab-pane deplistContent active">
  33. <div class="input-group">
  34. <span class="input-group-addon" data-i18n="resources.text_address"></span>
  35. <input id="address" type="text" class="form-control" placeholder="超图软件"/>
  36. </div>
  37. <p></p>
  38. <div class="input-group">
  39. <span class="input-group-addon" data-i18n="resources.text_filterField"></span>
  40. <input id="filters" type="text" class="form-control"
  41. placeholder="北京市,朝阳区"/>
  42. </div>
  43. <p></p>
  44. <div class="input-group">
  45. <span class="input-group-addon" data-i18n="resources.text_minIndex"></span>
  46. <input id="fromIndex" type="text" class="form-control"
  47. placeholder="0"/>
  48. </div>
  49. <p></p>
  50. <div class="input-group">
  51. <span class="input-group-addon" data-i18n="resources.text_maxIndex"></span>
  52. <input id="toIndex" type="text" class="form-control"
  53. placeholder="10"/>
  54. </div>
  55. <p></p>
  56. <div class="input-group">
  57. <span class="input-group-addon" data-i18n="resources.text_maxCount"></span>
  58. <input id="maxReturn" type="text" class="form-control"
  59. placeholder="-1"/>
  60. </div>
  61. <p></p>
  62. <div class="input-group">
  63. <span class="input-group-addon" data-i18n="resources.text_coorSystem"></span>
  64. <input id="prjCoordSys" type="text" class="form-control"
  65. placeholder="{epsgcode:4326}"/>
  66. </div>
  67. <p></p>
  68. <div align="right">
  69. <input type="button" id='codeBtn' class="btn btn-primary" data-i18n="[value]resources.text_input_value_match"/>
  70. </div>
  71. </div>
  72. <div id="geodecodeParam" role="tabpanel" class="tab-pane deplistContent">
  73. <div class="input-group">
  74. <span class="input-group-addon" data-i18n="resources.text_abscissa"></span>
  75. <input id="xCoord" type="text" class="form-control" placeholder="116.3518541194752"/>
  76. </div>
  77. <p></p>
  78. <div class="input-group">
  79. <span class="input-group-addon" data-i18n="resources.text_ordinate"></span>
  80. <input id="yCoord" type="text" class="form-control"
  81. placeholder="40.00097839595237"/>
  82. </div>
  83. <p></p>
  84. <div class="input-group">
  85. <span class="input-group-addon" data-i18n="resources.text_filterField"></span>
  86. <input id="filters2" type="text" class="form-control"
  87. placeholder=""/>
  88. </div>
  89. <p></p>
  90. <div class="input-group">
  91. <span class="input-group-addon" data-i18n="resources.text_minIndex"></span>
  92. <input id="fromIndex2" type="text" class="form-control"
  93. placeholder="0"/>
  94. </div>
  95. <p></p>
  96. <div class="input-group">
  97. <span class="input-group-addon" data-i18n="resources.text_maxIndex"></span>
  98. <input id="toIndex2" type="text" class="form-control"
  99. placeholder="10"/>
  100. </div>
  101. <p></p>
  102. <div class="input-group">
  103. <span class="input-group-addon" data-i18n="resources.text_maxCount"></span>
  104. <input id="maxReturn2" type="text" class="form-control"
  105. placeholder="-1"/>
  106. </div>
  107. <p></p>
  108. <div class="input-group">
  109. <span class="input-group-addon" data-i18n="resources.text_queryRadius"></span>
  110. <input id="geoDecodingRadius" type="text" class="form-control"
  111. placeholder="-1"/>
  112. </div>
  113. <p></p>
  114. <div class="input-group">
  115. <span class="input-group-addon" data-i18n="resources.text_ordinate"></span>
  116. <input id="prjCoordSys2" type="text" class="form-control"
  117. placeholder="{epsgcode:4326}"/>
  118. </div>
  119. <p></p>
  120. <div align="right">
  121. <input type="button" id='decodeBtn' class="btn btn-primary" data-i18n="[value]resources.text_input_value_match"/>
  122. </div>
  123. </div>
  124. </div>
  125. </div>
  126. </div>
  127. </div>
  128. <script type="text/javascript" src="../../dist/classic/include-classic.js"></script>
  129. <script type="text/javascript">
  130. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  131. var infowin, layer, markerlayer,
  132. url = host + "/iserver/services/map-china400/rest/maps/China_4326",
  133. addressUrl = host + "/iserver/services/addressmatch-Address/restjsr/v1/address",
  134. imgUrl = "../img/marker.png",
  135. addressMatchService = new SuperMap.REST.AddressMatchService(addressUrl, {data: '11'}),
  136. map = new SuperMap.Map("map", {
  137. controls: [
  138. new SuperMap.Control.Navigation(),
  139. new SuperMap.Control.Zoom()
  140. ]
  141. });
  142. map.addControl(new SuperMap.Control.MousePosition());
  143. layer = new SuperMap.Layer.TiledDynamicRESTLayer("China", url, null, {maxResolution: "auto"});
  144. markerlayer = new SuperMap.Layer.Markers("markerLayer");
  145. layer.events.on({"layerInitialized": addLayers});
  146. function addLayers() {
  147. map.addLayers([layer, markerlayer]);
  148. map.setCenter(new SuperMap.LonLat(116.383572, 39.914714), 10);
  149. }
  150. $("#geocode").click(function () {
  151. $("#geocode")[0].className = 'active';
  152. $("#geodecode")[0].className = '';
  153. $("#geocodeParam").addClass('active');
  154. $("#geodecodeParam").removeClass('active');
  155. });
  156. $("#geodecode").click(function () {
  157. $("#geocode")[0].className = '';
  158. $("#geodecode")[0].className = 'active';
  159. $("#geodecodeParam").addClass('active');
  160. $("#geocodeParam").removeClass('active');
  161. });
  162. //判断输入字符串是否为空或者全部都是空格
  163. function isNull(str) {
  164. if (str == "") return true;
  165. var regu = "^[ ]+$";
  166. var re = new RegExp(regu);
  167. return re.test(str);
  168. }
  169. $("#codeBtn").click(function () {
  170. var geoCodeParam = new SuperMap.GeoCodingParameter({
  171. address: $('#address').val() || $('#address').attr('placeholder'),
  172. fromIndex: $('#fromIndex').val() || $('#fromIndex').attr('placeholder'),
  173. toIndex: $('#toIndex').val() || $('#toIndex').attr('placeholder'),
  174. filters: $('#filters').val() || $('#filters').attr('placeholder'),
  175. prjCoordSys: $('#prjCoordSys').val() || $('#prjCoordSys').attr('placeholder'),
  176. maxReturn: $('#maxReturn').val() || $('#maxReturn').attr('placeholder')
  177. });
  178. addressMatchService.code(geoCodeParam, match);
  179. });
  180. $("#decodeBtn").click(function () {
  181. var geoDecodeParam = new SuperMap.GeoDecodingParameter({
  182. x: $('#xCoord').val() || $('#xCoord').attr('placeholder'),
  183. y: $('#yCoord').val() || $('#yCoord').attr('placeholder'),
  184. fromIndex: $('#fromIndex2').val() || $('#fromIndex2').attr('placeholder'),
  185. toIndex: $('#toIndex2').val() || $('#toIndex2').attr('placeholder'),
  186. filters: $('#filters2').val() || $('#filters2').attr('placeholder'),
  187. prjCoordSys: $('#prjCoordSys2').val() || $('#prjCoordSys2').attr('placeholder'),
  188. maxReturn: $('#maxReturn2').val() || $('#maxReturn2').attr('placeholder'),
  189. geoDecodingRadius: $('#geoDecodingRadius').val() || $('#geoDecodingRadius').attr('placeholder'),
  190. });
  191. addressMatchService.decode(geoDecodeParam, match);
  192. });
  193. function match(obj) {
  194. closeInfoWin();
  195. markerlayer.clearMarkers();
  196. obj.result.map(function (item) {
  197. var size = new SuperMap.Size(44, 33);
  198. var offset = new SuperMap.Pixel(-(size.w / 2), -size.h);
  199. var icon = new SuperMap.Icon(imgUrl, size, offset);
  200. var marker = new SuperMap.Marker(new SuperMap.LonLat(item.location.x, item.location.y), icon);
  201. marker.events.on({
  202. "click": openInfoWin,
  203. "scope": marker
  204. });
  205. markerlayer.addMarker(marker);
  206. map.setCenter(new SuperMap.LonLat(116.383572, 39.914714), 8);
  207. function openInfoWin() {
  208. closeInfoWin();
  209. var lonlat = marker.getLonLat();
  210. var size = new SuperMap.Size(0, 33);
  211. var offset = new SuperMap.Pixel(11, -30);
  212. var icon = new SuperMap.Icon(imgUrl, size, offset);
  213. var innerHTML = "";
  214. innerHTML += resources.text_address + ":" + item.address + "<br>";
  215. var x = Number(item.location.x.toString().match(/^\d+(?:\.\d{0,2})?/));
  216. var y = Number(item.location.y.toString().match(/^\d+(?:\.\d{0,2})?/));
  217. innerHTML += resources.text_coordinate +":[" + x + "," + y + "]<br>";
  218. if (item.score > 0) {
  219. innerHTML += resources.text_coordinate +":" + item.score + "<br>";
  220. }
  221. innerHTML += resources.text_matchDegree + ":" + item.filters + "<br>";
  222. var popup = new SuperMap.Popup.FramedCloud("popwin",
  223. new SuperMap.LonLat(lonlat.lon, lonlat.lat),
  224. null,
  225. innerHTML,
  226. icon,
  227. true);
  228. infowin = popup;
  229. map.addPopup(popup);
  230. }
  231. });
  232. //关闭信息框
  233. function closeInfoWin() {
  234. if (infowin) {
  235. try {
  236. infowin.hide();
  237. infowin.destroy();
  238. }
  239. catch (e) {
  240. }
  241. }
  242. }
  243. }
  244. </script>
  245. </body>
  246. </html>