编写WMTS服务核心工做是什么?瓦片图地址模板、比例尺与分辨率、WGS84与瓦片图坐标的换算算法。还在找谷歌地图的比例尺和分辨率吗?还在用在用数学公式一点一点计算坐标吗?不用啦,我在这里把我已经计算好的分享给你们用。 天地图WGS84比例尺与分辨率,注意天地图WGS84地图已应用GCJ-02国家火星坐标系,坐标有偏移: [cpp] view plain copy 18:5.36441802978515E-06,//街道 17:1.07288360595703E-05, 16:2.1457672119140625E-05, 15:4.29153442382814E-05, 14:8.58306884765629E-05, 13:0.000171661376953125, 12:0.00034332275390625, 11:0.0006866455078125, 10:0.001373291015625, 9:0.00274658203125, 8:0.0054931640625, 7:0.010986328125, 6:0.02197265625, 5:0.0439453125, 4:0.087890625, 3:0.17578125, 2:0.3515625, 1:0.703125 //全球 天地图的投影地图与OSM地图、谷歌地图的比例尺与分辨率其实是相同的,以下所示: [cpp] view plain copy 18:0.597164283559817, 17:1.19432856685505, 16:2.38865713397468, 15:4.77731426794937, 14:9.55462853563415, 13:19.1092570712683, 12:38.2185141425366, 11:76.4370282850732, 10:152.8740565704, 9:305.7481128, 8:611.49622628138, 7:1222.99245256249, 6:2445.98490512499, 5:4891.96981024998, 4:9783.93962049996, 3:19567.8792409999, 2:39135.7584820001, 1:78271.5169639999 还有一个用天地图跳过国家火星GCJ-02的捷径,就是把WGS84坐标换算成为WebMecator坐标,代码以下: [cpp] view plain copy void wgs84_to_webmercator(double xy[2]) { xy[0] = xy[0] * 20037508.3427892 / 180; xy[1] = log(tan((90 + xy[1])*PI / 360)) / (PI / 180); xy[1] = xy[1] * 20037508.3427892 / 180; } 通过验证,天地图WebMecator投影与谷歌、OSM地图可以重合。