天地图的使用

一、天地图是一个地理信息公共服务平台,提供丰富的地图数据和服务,包括矢量图层、卫星图像等。用户可以通过天地图官网或各种开发接口获取地图数据,并将其应用于不同的开发环境中,如网页开发、GIS软件等。
  • 之前使用高德地图,但是突然通知我们要商业授权,收 5 万/年,没有办法换成天地图,虽然没有高德完善,但是能用,主要是免费的。如果用天地图先要注册账号。
    官方地址:https://www.tianditu.gov.cn
下面是流程
  1. 准备页面
    根据HTML 标准,每一份HTML 文档都应该声明正确的文档类型,我们建议您使用最新的符合HTML5 规范的文档声明:
<!DOCTYPE html>
  1. 引入天地图JavaScript API文件(如果是 vue 框架,放在 index.html中)
<script src="http://api.tianditu.gov.cn/api?v=4.0&tk=您的密钥" type="text/javascript"></script>
  1. 创建地图容器元素
    地图需要一个HTML元素作为容器,这样才能展现到页面上。这里我们创建了一个div元素。将div元素的宽和高分别设置为100%,使其充满整个屏幕,或者您也可以计算浏览器窗口的大小并进行设置。

  2. 创建地图实例

//初始化地图对象
var map=new T.Map('mapDiv');
  1. 确定经纬度坐标
var lnglat = new T.LngLat(116.40969,39.89945)

这里我们使用T命名空间下的T.Lnglat类来创建一个坐标点。T.Lnglat类描述了一个地理坐标点,其中116.40969表示经度,39.89945表示纬度。

  1. 地图初始化
map.centerAndZoom(lnglat,12);

在创建地图实例后,我们需要对其进行初始化,map.centerAndZoom方法要求设置中心点坐标和地图级别。 地图必须经过初始化才可以执行其他操作。

二、因为天地图的组件库不是很丰富,所以使用了 leaflet 地图组件库

Leaflet API 文档介绍了用于在网页中创建和操作地图的 Leaflet 库。文档涵盖了 UI 图层、基本类型、控件、地图状态选项、事件、方法等多个方面的内容。包括 Marker 标记、Popup 弹出窗口、Tooltip 工具提示等 UI 图层,LatLng 经纬度等基本类型,以及缩放、版权等控件。还详细说明了地图的各种状态选项和丰富的事件类型,以及众多用于操作地图的方法,如添加/移除图层和控件、修改地图状态、地理定位、获取地图状态和进行坐标转换等。

具体内容可以自己去看,官方地址:https://leafletjs.cn/reference.html
三、但是在使用leaflet 组件库的时候发现,marker标记不能设置自定义图片的方向又引入了leaflet-rotatedmarker组件库,主要是添加自定义图片的方向。

官方地址:https://github.com/bbecquet/Leaflet.RotatedMarker#readme

L.marker([48.8631169, 2.3708919], {
    rotationAngle: 45
}).addTo(map);
四、在使用leaflet组件的时候,发现坐标在地图中有偏移,然后引入了Leaflet.ChineseTmsProviders组件

官方地址:http://htoooth.github.io/Leaflet.ChineseTmsProviders/
初始化的代码

 let leafletMap = L.map("mapcs", {
    zoomControl: false, // 禁用默认的缩放控件
    attributionControl: false,
  }).setView([32.094265, 118.747467], 16);
  const tileOptions = {
    minZoom: 1,
    maxZoom: 19,
    zoom: 18,
    key: "天地图的key",
  };

  L.tileLayer
    .chinaProvider("TianDiTu.Satellite.Map", tileOptions)
    .addTo(leafletMap);
  // 创建比例尺控件并设置位置
  let scaleControl = L.control.scale({
    position: "bottomright", // 设置在右下角
    imperial: false,
  });
  // 将比例尺控件添加到地图
  scaleControl.addTo(leafletMap);
  // 创建自定义的缩放控件并设置位置
  let zoomControl = L.control.zoom({
    position: "bottomright", // 设置在右下角
  });
  // 将自定义的缩放控件添加到地图
  leafletMap.addControl(zoomControl);


/*
方法: 锚点
imgIcon :图片地址
longLat:经纬度
size: 图片大小
angle:角度
*/
function markerfunc(imgIcon, longLat, size, angle = 0) {
  //创建图片对象
  var myIcon = L.icon({
    iconUrl: imgIcon,
    iconSize: size,
    iconAnchor: [size[0] / 2, size[1]],
  });

  let marker = L.marker(longLat, {
    icon: myIcon,
    rotationAngle: angle,
    draggable: false,
  }).addTo(leafletMap);
  return marker;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容