01_mapQueryByGeometry3857.html 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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_mapQueryByGeometry"></title>
  9. <script type="text/javascript" include="widgets" src="../js/include-web.js"></script>
  10. </head>
  11. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  12. <div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
  13. <script type="text/javascript" src="../../dist/leaflet/include-leaflet.js"></script>
  14. <script type="text/javascript">
  15. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  16. var map, resultLayer,
  17. url = host + "/iserver/services/map-china400/rest/maps/China";
  18. map = L.map('map', {
  19. preferCanvas: true,
  20. center: [39, 100],
  21. maxZoom: 18,
  22. zoom: 5
  23. });
  24. L.supermap.tiledMapLayer(url).addTo(map);
  25. query();
  26. function query() {
  27. var polygon = L.polygon([[38, 100], [36, 110], [35, 105], [38, 100]], {color: 'red'});
  28. polygon.addTo(map);
  29. //服务端数据坐标系为 3857,因此将查询数据转为与服务端对应坐标系:
  30. var geometry = L.Util.transform(polygon, L.CRS.EPSG4326, L.CRS.EPSG3857);
  31. var param = new SuperMap.QueryByGeometryParameters({
  32. queryParams: {name: "China_Province_pl@China"},
  33. geometry: geometry
  34. });
  35. widgets.loader.showLoader();
  36. L.supermap
  37. .queryService(url)
  38. .queryByGeometry(param, function (serviceResult) {
  39. //leaflet 绘制数据默认为 4326,服务器返回数据为 3857,因此在加载到地图前,先进行坐标系转换:
  40. var result = L.Util.transform(serviceResult.result.recordsets[0].features, L.CRS.EPSG3857, L.CRS.EPSG4326);
  41. widgets.loader.removeLoader();
  42. resultLayer = L.geoJSON(result).addTo(map);
  43. polygon.remove();
  44. polygon.addTo(map);
  45. });
  46. }
  47. </script>
  48. </body>
  49. </html>