初次接触leaflet,结合php开发步步走。很久没写稿子了,正好一个开发项目,来一段

首先说一下leaflet是什么,它是一个地图js库,网址是Leaflet - a JavaScript library for interactive maps    ,相关的使用方法可以自己去看一下,像我这种英文不好的,直接就用edge打开翻译去查看了。

首先当然是下载了,点击download,这英文单词还是认识的哈,下载最新的1.94稳定版本即可。有的开发者都是用于项目,我这因为比较简单,直接纯粹的js项目处理,顶多使用php做下后端处理,返回json就OK了,所以没有那么复杂,咱们下面接着看怎么使用。

我建立了个目录,解压缩到这个目录下的leaflet目录,然后在根目录新建一个index.html文件,来开始码代码。

起手式来上html:5  回车;

然后引入leaflet的相关”元素“。

    <!-- 引入 Leaflet 的 CSS 和 JS 文件 -->
    <link rel="stylesheet" href="./leaflet/leaflet.css" />
    <script src="./leaflet/leaflet.js"></script>
    <script src="./leaflet/jquery-3.6.0.min.js"></script>

这里我引入了jquery,不用问为什么,等你用到你就知道了。引入完成了要怎么能够出现地图呢???

忘了说明了,我做的是一个离线的地图应用,不是手机端的,纯PC使用,那么就免不了需要用到离线的地图瓦片,那么怎么处理好地图瓦片的下载问题呢?

上工具,还是开源的。

地图下载器,下载地图好帮手!

下载地址:地图下载器: 使用Java开发的地图瓦片图下载工具,支持OpenStreetMap、天地图、谷歌地图、高德地图、腾讯地图、必应地图的XYZ瓦片图下载与合并。

 自己去下载。

下载完成后的使用就很方便了,以我下载的高德地图标注版本为例。

左边选择地图,右边选择省份,城市。确定后,就给你画出个边界来,这就是你要下载的瓦片了,别妄想下载太大的地图,就是那个瓦片的数量是相当的多啊。尽量根据自己的项目来确定需要的地图的大小。

选择好后,点击下载地图。会弹出地图瓦片层次的选择框。

这里要注意,你也要根据你自己项目的需要下载,没有必要下载太多,我下载测试了,1-17层是有图像的,18-21是没有图像的,所以就没有必要下载,而且我项目对精度没有太高的要求,默认缩放层级我就控制在了11-17层,需要下载多少,全看你项目的需要。

咱们预估一下下载量,0-17的。

37万张啊,才到17级,你看看21级的;

不等了,还没处理完20层的,看到19层就达到了四百多万张,想想这么零碎的文件读取效率会有多高吧。占用空间会有多大就好了,如果你选个全国地图,那数据量是恐怖的,当然了也能用,你耗得起时间就能行了。

下载完之后,我的建议是下载到你的项目目录里,就不用来回迁移文件了。

继续码代码。

首先在body里创建一个div容器,用来显示地图。

<!-- 地图容器 -->
    <div id="map"></div>

容器也要顶一下大小,给了id是map了,那就style一下map。

<style>
        #map {
            height: 990px;
        }
    </style>

给个高度就够用。

然后代码继续,算了直接给个完整版代码吧。

<!DOCTYPE html>
<html lang="zh-cn">

<head>
    <meta charset="UTF-8"> <!-- 设置网页字符编码为 UTF-8 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 优化移动端视口显示 -->

    <title>OfflineMap</title> <!-- 网页标题 -->

    <!-- 引入 Leaflet 的 CSS 和 JS 文件 -->
    <link rel="stylesheet" href="./leaflet/leaflet.css" /> <!-- 引入 Leaflet 样式表 -->
    <script src="./leaflet/leaflet.js"></script> <!-- 引入 Leaflet JavaScript 库 -->
    <script src="./leaflet/jquery-3.6.0.min.js"></script> <!-- 引入 jQuery JavaScript 库 -->

    <style>
        html,
        body {
            /* 设置 HTML 和 Body 元素高度为浏览器窗口高度 */
            height: 100%;
            /*  清除内外边距,避免内容溢出  */
            margin: 0;

        }

        #map {
            /* 设置地图容器高度为 990px */
            height: 990px;

        }
    </style>
</head>

<body>

    <!-- 地图容器 -->
    <div id="map"></div>

    <script>

        // 定义离线瓦片图层,使用本地路径加载地图瓦片
        const baseLayers = L.tileLayer('./titles/{z}/{x}/{y}/tile.png', {
            maxZoom: 17, <!-- 最大缩放级别为 17 -->
            attribution: '&copy; <a href="#">测试标注基础地图</a>'
        });

        // 初始化地图实例,设置中心坐标、缩放范围、初始缩放级别、显示的基础图层及禁用版权信息
        const map = L.map('map', {
            // 地图中心坐标:经度 35.023726,纬度 118.356464
            center: [35.023726, 118.325837],
            // < !--最小缩放级别为 11 -- >
            minZoom: 11,
            // < !--最大缩放级别为 17 -- >
            maxZoom: 17,
            // < !--初始缩放级别为 12 -- >
            zoom: 12,
            // < !--显示的基础图层为定义的离线瓦片图层 -->
            layers: [baseLayers],
            //显示缩放控件
            zoomControl: true,
            // < !--添加此行以禁用版权信息 -->
            attributionControl: false
        });

        // 创建标注点,设置坐标、弹窗内容,并将其添加到地图上
        // < !--创建标注点,坐标为经度 35.103771,纬度 118.356464 -- >
        const marker = L.marker([35.103771, 118.356464])
            .bindPopup('这里是临沂市人民政府'); // < !--为标注点绑定弹窗,内容为 "这里是临沂市人民政府" -- >
        marker.addTo(map); //< !--将标注点添加到地图上 -->
    </script>


</body>

</html>

都给注释好了,不用多解释了吧。

效果是这样的。

天黑了,该下班回家了,不写了,等后续再整吧。这是个连载哈。

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半熟的皮皮虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值