吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 978|回复: 5
收起左侧

[其他原创] 写一个简单的纯前端在地图上显示自己去过的地方

[复制链接]
zhApocalypse 发表于 2024-9-13 21:02
本帖最后由 zhApocalypse 于 2024-9-14 16:51 编辑

最近想在自己博客上添加自己去过的地方,所以写了这个,使用开源的css库,都打上注释了,我最笨不知道说啥了以下是代码(有优化的空间)

更新了cdn加速js和css,更新了通过当前ip来切换国内外的地图瓦片显示



<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>旅途</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.7.1/dist/leaflet.css" />
    <style>
        /* 使页面和地图充满整个屏幕 */
        html, body {
            height: 100%;
            margin: 0;
            padding: 0;
        }
        #map {
            height: 100%;
            width: 100%;
        }
        .popup-img {
            width: 200px;
            height: auto;
        }
    </style>
</head>
<body>
    <div id="map"></div>
    <!-- 引入 Leaflet.js -->
    <script src="https://cdn.jsdelivr.net/npm/leaflet@1.7.1/dist/leaflet.js"></script>
    <script>
        // 初始化地图,不设置默认中心和缩放级别
        var map = L.map('map');
        // 获取用户IP的地理位置
        fetch('http://ip-api.com/json/')
            .then(response => response.json())
            .then(data => {
                const country = data.countryCode; // 获取用户的国家代码,如"CN"代表中国
                if (country === 'CN') {
                    // 在中国时加载高德地图
                    L.tileLayer('https://webst01.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}', {
                        subdomains: '1234',
                        attribution: '高德地图'
                    }).addTo(map);
                } else {
                    // 在其他国家时加载OpenStreetMap
                    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
                        attribution: '© OpenStreetMap contributors'
                    }).addTo(map);
                }
            })
            .catch(error => {
                console.error('无法获取用户地理位置信息:', error);
                // 默认加载OpenStreetMap
                L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
                    attribution: '© OpenStreetMap contributors'
                }).addTo(map);
            });
        // 添加标记点并绑定弹出图片
        var markers = [
        {
                position: [55.75420336052686, 37.620849065821815], // 改成自己的经纬度
                image: 'https://s2.loli.net/2024/09/14/VzTxZ5JC94eAhEo.jpg', // 改成自己的图片链接
                description: '莫斯科克红场'
            },
            {
                position: [55.75282792984788, 37.62391339146543],
                image: 'https://s2.loli.net/2024/09/14/NDkl1tBAbUp4ZKu.jpg',
                description: '莫斯科圣瓦西里主教座堂'
            }

        ];
        // 定义一个空的边界对象
        var bounds = new L.LatLngBounds();
        // 循环添加标点
        markers.forEach(function(marker) {
            var mark = L.marker(marker.position).addTo(map)
                .bindPopup('<b>' + marker.description + '</b><br><img class="popup-img" src="' + marker.image + '" alt="' + marker.description + '">');

            // 扩展边界对象以包含这个标记点
            bounds.extend(marker.position);
        });
        // 调整地图视角以适应所有标记点
        map.fitBounds(bounds);
    </script>
</body>
</html>
```


爱飞的猫编辑:修正排版

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

shun丶sir 发表于 2024-9-14 08:22
需要,有大佬再给完善一下最好了
 楼主| zhApocalypse 发表于 2024-9-14 10:34
TabKey9 发表于 2024-9-14 10:59
<!-- 引入 Leaflet.js -->这个要是能CND一下或者代{过}{滤}理一下就好了,国内看不了
 楼主| zhApocalypse 发表于 2024-9-14 16:17
TabKey9 发表于 2024-9-14 10:59
这个要是能CND一下或者代{过}{滤}理一下就好了,国内看不了

这个可以在百度上下载到本地引入就好了
 楼主| zhApocalypse 发表于 2024-9-14 16:52
TabKey9 发表于 2024-9-14 10:59
这个要是能CND一下或者代{过}{滤}理一下就好了,国内看不了

更新了cdn加速和根据ip切换地图瓦片
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表