高德地图更换天地图底图(坐标转换)—使用高德API(WMTS)

本文记录了如何处理高德地图无法绘制村镇边界的问题,通过引入天地图并进行坐标转换。首先,使用gcoord.js将高德地图的火星坐标转换为wgs84经纬度,再转化为墨卡托4490坐标。接着,利用天地图API和高德地图WMTS服务更换底图,详细阐述了参数配置和接口调用方法。
摘要由CSDN通过智能技术生成

踩坑日记:因高德地图无法对村镇进行边界图的绘制,故引入天地图作为补充以解决问题

一、首先是对坐标进行转换,因为高德地图是火星坐标,而天地图是wgs84墨卡托4490,所以必须进行如下转换

①先把高德地图经纬度转换为wgs84经纬度,这个库是gcoord.js,使用方法自行百度

var binzhou84 = gcoord.transform (
            [117.96484387440898, 37.38205313024871],
            gcoord.GCJ02,
            gcoord.WGS84,

②然后使用一个固定函数将wgs84经纬度转化为墨卡托4490,然后将返回的墨卡托4490对象,使用高德地图初始化时赋值给center

function lonlat2mercator(a,b) {
            var mercator = {
              x: 0,
              y: 0
            };
              var x = a * 20037508.34 / 180;
              var y = Math.log(Math.tan((90 + b) * Math.PI / 360)) / (Math.PI / 180);
              y = y * 20037508.34 / 180;
              mercator.x = x;
              mercator.y = y;
              return mercator;
          }

二、其次是使用高德地图API(WMTS)进行底图的更换

高德地图的API文档中并没有具体使用方法,以下是针对天地图的使用方法

因为天地图的原因,所以请求的链接只能使用墨卡托类型的(见下图红色箭头)

下述链接为天地图API接口:

天地图API

 

// 调用wmts服务更换目标底图
          var wms  = new AMap.TileLayer.WMTS({
            url: 'http://t0.tianditu.gov.cn/vec_w/wmts',
            blend: false,
            tileSize: 256,
            params: {
              SERVICE:'WMTS',
              VERSION:'1.0.0',
              REQUEST:'GetTile',
              LAYER:'vec',
              STYLE:'default',
              TILEMATRIXSET:'w',
              FORMAT:'tiles',
              tk:'26ed1e9f78431ad1a6d6b99d82acc5f6'
// 注意参数中的LAYER:'vec'和TILEMATRIXSET:'w',这两个要与链接中的vec_w对应
            }
          })
          wms.setMap(this.map);

 

package com.map; public class GPSConverterUtils { public static final String BAIDU_LBS_TYPE = "bd09ll"; public static double pi = 3.1415926535897932384626; public static double a = 6378245.0; public static double ee = 0.00669342162296594323; /** * 84 to 火星坐标系 (GCJ-02) World Geodetic System ==> Mars Geodetic System * 地图 转 火星 * @param lat * @param lon */ public static GPS gps84_To_Gcj02(double lat, double lon) { if (outOfChina(lat, lon)) { return null; } double dLat = transformLat(lon - 105.0, lat - 35.0); double dLon = transformLon(lon - 105.0, lat - 35.0); double radLat = lat / 180.0 * pi; double magic = Math.sin(radLat); magic = 1 - ee * magic * magic; double sqrtMagic = Math.sqrt(magic); dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi); double mgLat = lat + dLat; double mgLon = lon + dLon; return new GPS(mgLat, mgLon); } /** * * 火星坐标系 (GCJ-02) to 84 * * @param lon * @param lat * @return *火星转地图 */ public static GPS gcj_To_Gps84(double lat, double lon) { GPS gps = transform(lat, lon); double lontitude = lon * 2 - gps.getLon(); double latitude = lat * 2 - gps.getLat(); return new GPS(latitude, lontitude); } /** * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 GCJ-02 坐标转换成 BD-09 坐标 *火星转百度 * @param gg_lat * @param gg_lon */ public static GPS gcj02_To_Bd09(double gg_lat, double gg_lon) { double x = gg_lon, y = gg_lat; double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * pi); double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * pi); double bd_lon = z * Math.cos(theta) + 0.0065; double bd_lat = z * Math.sin(theta) + 0.006;
高德地图API离线使用的步骤如下: 1. 下载并安装离线地图开发环境,可以从官方网站或其他可靠来源获取。启动软件后,根据提示进行操作。 2. 在有网络连接的情况下,点击进入离线地图开发环境。如果没有网络连接,则插上离线地图加密锁后点击进入。 3. 在离线地图开发环境中,可以进行以下操作: - 添加离线地图:在没有网络的情况下,先将地图下载到本地。 - 添加本地数据:将自己的本地数据添加到地图上,并展示在地图上。 - 预设地图和管理地图:预设地图是系统默认提供的地图,管理地图是用户自己建立的离线地图。 - 管理数据:用户上传的本地数据,用于在地图上展示。 - 技术支持:如果有任何问题,可以点击相关链接或拨打电话进行咨询。 4. 在离线地图开发环境中,选择开发使用,可以进行以下操作: - 离线地图的开发:支持WEB开发,WMS(WMTS)、TMS和BIGEMAP直接加载离线地图的方式。 - 基于WEB的离线地图开发:加载地图代码HTML。 - 离线地图开发需要用到的本地KEY和地图ID。 - 在二次开发代码中加载地图时,需要使用到KEY和地图ID。 5. 如果需要浏览离线地图,点击浏览按钮即可查看地图。 总结来说,高德地图API的离线使用步骤包括下载安装离线地图开发环境、添加离线地图和本地数据、进行开发使用操作等。具体的操作步骤可以参考相关的官方教程和文档。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [百度(高德、GG歌)离线地图开发环境搭建【离线地图开发源代码】](https://blog.csdn.net/bigemap/article/details/86649040)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [高德地图Amap离线地图使用](https://blog.csdn.net/diyangxia/article/details/105289136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值