leaflet 加载高德地图

效果图:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="https://cdn.bootcdn.net/ajax/libs/leaflet/1.6.0/leaflet.css" rel="stylesheet">
        <script src="https://cdn.bootcdn.net/ajax/libs/leaflet/1.6.0/leaflet.js"></script>
        <style>
            #map{
                position:absolute;
                width:100vw;
                height:100vh;
            }
        </style>
    </head>
    <body>
        <div id='map'>
        </div>
        <script>
            var map = L.map('map',
            {
            zoomSnap: 0.1, // 地图的有效缩放级别
            maxZoom: 13,
            // crs: L.CRS.EPSG4326,  // 高德不是这个坐标系   
            zoomControl: true,
            editable:true,
            // wheelPxPerZoomLevel:	60  // 鼠标滚轮缩放 较小的值将使滚轮轮缩放更快
        }).setView([29.592024,106.231126], 13); // 重庆璧山区经纬度
            let baseLayer=L.tileLayer("http://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}",{
                    attribution: '&copy; 高德地图',
                    maxZoom: 13,
                    minZoom: 3,
                    subdomains: "1234",
                    zoom: 3
                });
            map.addLayer(baseLayer);   
            // map.on('layeradd',function() {
            //   console.log(layeradd)
              
            // })
            map.on('click',function(event) {
              console.log(event) // 返回当前点击的经纬度,及当前容器的坐标
              let {lat, lng} = event.latlng
              // map.setZoomAround([lat, lng],3)
              
              // console.log(map.attributionControl._map._layers) // 获取当前图层的比例尺
              // map.setZoom(6) // 指定到对应的缩放级别
              // shapingba = [29.554000,106.468590]
              // // panTo 平移到指定位置,flyTo平移到指定位置 并可设置缩放级别
              // map.panTo(shapingba)
              // map.flyTo(shapingba, 3)
            
            })
 let arr1 = [
      [107.577716172645609, 29.796720709302502],
      [107.577592225094861, 29.796914526276193],
      [107.577507323359043, 29.797142144209456],
      [107.577454631178185, 29.797393608354824]
    ]
    console.log(arr1)
    var polygon = L.polygon(arr1);
    // fitBounds 把所有点位放在合适的位置
    console.log(polygon.getBounds().getCenter()) // 获取中心点 {lat: 107.5775854019119, lng: 29.797057158828665}


// 动态加载
    function getMarkerIcon(item) {
      let zoom = map.getZoom();//缩放等级
      console.log(zoom)
      let icon = null;
      /*let value = item[this.airType];
    let bgcolor = getPollLevelColor(this.airType, value, this.timeType);//污染物背景颜色
    let txtcolor = getPollLevelTextColor(this.airType, value, this.timeType);//污染物字体颜色 */
      let value, bgcolor, txtcolor;
      let namelength = item.length;
      if (value === -999 || value === 0) {
        bgcolor = "#a1a3a6";
        value = "-";
      }

      if (zoom < 6) {
        icon = L.divIcon({
          html: "<div class='smallCircleMarker' style='background-color: " + bgcolor + ";'></div>",
          className: 'ss',
          iconSize: [7, 15],
          iconAnchor: [7, 7]
        });
      } else if (zoom >= 6 && zoom < 8)//6,7
      {
        icon = L.divIcon({
          html: "<div style='width: " + namelength * 14 + "px;'><div class='rectangleMarker' style='background-color: " + bgcolor + ";color:" + txtcolor + ";margin: 0 auto'>" + item + "</div></div>",
          className: 'ss',
          iconSize: [12, 19],
          iconAnchor: [12, 9]
        });
      } else if (zoom >= 8 && zoom < 10)//8,9
      {
        icon = L.divIcon({
          html: "<div class='smallCircleMarker' style='background-color: " + bgcolor + ";'></div>",
          className: 'ss',
          iconSize: [7, 15],
          iconAnchor: [7, 7]
        });
      } else if (zoom >= 10) {
        icon = L.divIcon({
          html: "<div style='width: " + namelength * 14 + "px;'><div class='rectangleMarker' style='background-color: " + bgcolor + ";color:" + txtcolor + ";margin: 0 auto'>" + item + "</div></div>",
          className: 'ss',
          iconSize: [12, 19],
          iconAnchor: [12, 9]
        });
      }
      return icon;
    }
    L.marker([29.592024, 106.231126], { icon: getMarkerIcon(name) }).addTo(map);
    map.on('zoomstart', function () {
      var zoomLevel = map.getZoom();
      console.log(zoomLevel)

      /*  var tooltip = $('.leaflet-tooltip');
 
       switch (zoomLevel) {
         case -2:
           tooltip.css('font-size', 7);
           break;
         case -1:
           tooltip.css('font-size', 10);
           break;
         case 0:
           tooltip.css('font-size', 12);
           break;
         case 1:
           tooltip.css('font-size', 14);
           break;
         case 2:
           tooltip.css('font-size', 16);
           break;
         case 3:
           tooltip.css('font-size', 18);
           break;
         default:
           tooltip.css('font-size', 14);
       } */
    })
        </script>
    </body>
</html>

 

  • {x}{y}{z} 分别代表瓦片的 X 坐标、Y 坐标和缩放级别。
  • http://webrd0{s}.is.autonavi.com/appmaptile 是瓦片服务的基础 URL。
  • lang=zh_cn 表示地图语言为中文。
  • size=1 表示瓦片的大小。
  • scale=1 表示地图的比例尺。
  • style=8 表示地图的风格或样式  6是卫星图 7是路网图

leaflet marker设置及根据zoom改变样式_leaflet 监控zoom 变化_圣焱的博客-CSDN博客

展示图层-入门教程-地图 JS API 2.0 | 高德地图API 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: leaflet是一种流行的JavaScript库,用于创建交互式地图地图应用程序。它具有轻量级、灵活和易于使用的特点,可以使用离线地图进行浏览。 要离线地图,首先需要准备地图图块。可以使用开源软件如MapBox Studio或TileMill来制作地图。将地图图块保存在磁盘或服务器上,并使用leaflet中的TileLayer来将其地图上。 例如,在leaflet中添离线地图的代码如下: ```javascript var offlineMap = L.tileLayer('path/to/tiles/{z}/{x}/{y}.png', { maxZoom: 18, attribution: 'Map data © OpenStreetMap contributors' }); var map = L.map('map').setView([51.505, -0.09], 13); map.addLayer(offlineMap); ``` 这里,tileLayer将离线地图图块的路径传递给tileLayer对象,然后将其添地图上。此处设置了最大缩放级别和属性信息。最后,使用L.map创建一个地图对象,并将TileLayer添地图上。 使用leaflet离线地图涉及了对地图数据的准备和处理,但一旦地图到页面上,它将非常流畅和快速,使离线地图的浏览变得容易。 ### 回答2: Leaflet 是一款轻量级的开源 JavaScript 地图库,它可以用于创建交互式、可定制化的地图,支持多种数据格式和多种地图样式。其中一个重要的功能就是离线地图离线地图需要以下几个步骤: 1. 下地图切片数据:离线地图需要下相应的地图切片数据,可以从专门的地图数据提供商处获取,也可以使用自己的切片数据。地图切片数据通常以图块的形式存储,每个图块包含地图上的一小部分。 2. 将切片数据转换为合适的格式:Leaflet 支持的地图数据格式包括 PNG、JPEG、GIF、SVG 和 WebP 等,因此需要将切片数据转换为其中一种格式。 3. 将切片数据Leaflet:在 Leaflet 中,可以使用 TileLayer 类离线地图数据。可以通过指定切片数据存储的路径、分辨率、缩放级别等属性来设置 TileLayer。 4. 在 Leaflet 中显示地图:在 TileLayer 离线地图数据之后,需要将其添Leaflet 地图对象中以进行显示。可以使用 map.addLayer() 方法将 TileLayer 添地图中。 需要注意的是,离线地图数据通常占用大量的存储空间,因此在下和处理数据时需要谨慎。此外,离线地图数据也需要及时更新以保证地图的准确性和实时性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值