leaflet.ChineseTmsProviders.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. if (L.Proj) {
  2. L.CRS.Baidu = new L.Proj.CRS('EPSG:900913', '+proj=merc +a=6378206 +b=6356584.314245179 +lat_ts=0.0 +lon_0=0.0 +x_0=0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs', {
  3. resolutions: function () {
  4. var level = 19
  5. var res = [];
  6. res[0] = Math.pow(2, 18);
  7. for (var i = 1; i < level; i++) {
  8. res[i] = Math.pow(2, (18 - i))
  9. }
  10. return res;
  11. }(),
  12. origin: [0, 0],
  13. bounds: L.bounds([20037508.342789244, 0], [0, 20037508.342789244])
  14. });
  15. }
  16. L.TileLayer.ChinaProvider = L.TileLayer.extend({
  17. initialize: function(type, options) { // (type, Object)
  18. var providers = L.TileLayer.ChinaProvider.providers;
  19. options = options || {}
  20. var parts = type.split('.');
  21. var providerName = parts[0];
  22. var mapName = parts[1];
  23. var mapType = parts[2];
  24. var url = providers[providerName][mapName][mapType];
  25. options.subdomains = providers[providerName].Subdomains;
  26. options.key = options.key || providers[providerName].key;
  27. if ('tms' in providers[providerName]) {
  28. options.tms = providers[providerName]['tms']
  29. }
  30. L.TileLayer.prototype.initialize.call(this, url, options);
  31. },
  32. getTileUrl: function (coords) {
  33. var data = {
  34. s: this._getSubdomain(coords),
  35. x: coords.x,
  36. y: coords.y,
  37. z: this._getZoomForUrl(),
  38. };
  39. if (this._map && !this._map.options.crs.infinite) {
  40. var invertedY = this._globalTileRange.max.y - coords.y;
  41. if (this.options.tms) {
  42. data['y'] = invertedY;
  43. }
  44. data['-y'] = invertedY;
  45. }
  46. data.sx = data.x >> 4
  47. data.sy = (( 1 << data.z) - data.y) >> 4
  48. return L.Util.template(this._url, L.Util.extend(data, this.options));
  49. },
  50. });
  51. L.TileLayer.ChinaProvider.providers = {
  52. TianDiTu: {
  53. Normal: {
  54. Map: "//t{s}.tianditu.gov.cn/DataServer?T=vec_w&X={x}&Y={y}&L={z}&tk={key}",
  55. Annotion: "//t{s}.tianditu.gov.cn/DataServer?T=cva_w&X={x}&Y={y}&L={z}&tk={key}"
  56. },
  57. Satellite: {
  58. Map: "//t{s}.tianditu.gov.cn/DataServer?T=img_w&X={x}&Y={y}&L={z}&tk={key}",
  59. Annotion: "//t{s}.tianditu.gov.cn/DataServer?T=cia_w&X={x}&Y={y}&L={z}&tk={key}"
  60. },
  61. Terrain: {
  62. Map: "//t{s}.tianditu.gov.cn/DataServer?T=ter_w&X={x}&Y={y}&L={z}&tk={key}",
  63. Annotion: "//t{s}.tianditu.gov.cn/DataServer?T=cta_w&X={x}&Y={y}&L={z}&tk={key}"
  64. },
  65. Subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
  66. key: "174705aebfe31b79b3587279e211cb9a"
  67. },
  68. GaoDe: {
  69. Normal: {
  70. Map: '//webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}'
  71. },
  72. Satellite: {
  73. Map: '//webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
  74. Annotion: '//webst0{s}.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}'
  75. },
  76. Subdomains: ["1", "2", "3", "4"]
  77. },
  78. Google: {
  79. Normal: {
  80. Map: "//www.google.cn/maps/vt?lyrs=m@189&gl=cn&x={x}&y={y}&z={z}"
  81. },
  82. Satellite: {
  83. Map: "//www.google.cn/maps/vt?lyrs=s@189&gl=cn&x={x}&y={y}&z={z}",
  84. Annotion: "//www.google.cn/maps/vt?lyrs=y@189&gl=cn&x={x}&y={y}&z={z}"
  85. },
  86. Subdomains: []
  87. },
  88. Geoq: {
  89. Normal: {
  90. Map: "//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}",
  91. PurplishBlue: "//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}",
  92. Gray: "//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetGray/MapServer/tile/{z}/{y}/{x}",
  93. Warm: "//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer/tile/{z}/{y}/{x}",
  94. },
  95. Theme: {
  96. Hydro: "//thematic.geoq.cn/arcgis/rest/services/ThematicMaps/WorldHydroMap/MapServer/tile/{z}/{y}/{x}"
  97. },
  98. Subdomains: []
  99. },
  100. OSM: {
  101. Normal: {
  102. Map: "//{s}.tile.osm.org/{z}/{x}/{y}.png",
  103. },
  104. Subdomains: ['a', 'b', 'c']
  105. },
  106. Baidu: {
  107. Normal: {
  108. Map: '//online{s}.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles=pl&scaler=1&p=1'
  109. },
  110. Satellite: {
  111. Map: '//shangetu{s}.map.bdimg.com/it/u=x={x};y={y};z={z};v=009;type=sate&fm=46',
  112. Annotion: '//online{s}.map.bdimg.com/tile/?qt=tile&x={x}&y={y}&z={z}&styles=sl&v=020'
  113. },
  114. Subdomains: '0123456789',
  115. tms: true
  116. },
  117. Tencent: {
  118. Normal: {
  119. Map: "//rt{s}.map.gtimg.com/tile?z={z}&x={x}&y={-y}&type=vector&styleid=3",
  120. },
  121. Satellite: {
  122. Map: "//p{s}.map.gtimg.com/sateTiles/{z}/{sx}/{sy}/{x}_{-y}.jpg",
  123. },
  124. Terrain: {
  125. Map: "//p{s}.map.gtimg.com/demTiles/{z}/{sx}/{sy}/{x}_{-y}.jpg"
  126. },
  127. Subdomains: '0123',
  128. }
  129. };
  130. L.tileLayer.chinaProvider = function(type, options) {
  131. return new L.TileLayer.ChinaProvider(type, options);
  132. };