web端百度离线地图3.0的制作使用

本文详细介绍如何在web端实现百度地图API的离线访问,包括JSAPI文件下载、修改及本地资源引用,涵盖瓦片图加载、模块文件下载与引用路径修改等步骤,最后通过测试确保功能正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

花了一天的时间查了好多资料,终于地图可以在web端离线访问了。
参考博客:添加链接描述
主要是参考上面博主的文章做好的,非常感谢
这是我做的一个demo,可以直接用。有需要的朋友可以参考:
链接:https://pan.baidu.com/s/1uT5h0OI-142EZQeYHjwiKw
提取码:nd8q

总结一下离线开发的几点:

1.JS API文件下载

  • 访问http://api.map.baidu.com/api?v=3.0
    在这里插入图片描述
  • 访问上图链接http://api.map.baidu.com/getscript?v=3.0&ak=&services=&t=20200702151529
    在这里插入图片描述
    在这里插入图片描述
    将代码格式化复制,保存到本地上,就先保存在api_v3.0_min.js文件,我的是apiv1.3.min.js(这个自己命名就好)

2.修改保存到本地的api_v3.0_min.js文件

  • 屏蔽ak验证
    定位到这块代码,将3581行加上,if (/^http/.test(a)) return;
    屏蔽ak验证,若调用外部资源直接返回
    在这里插入图片描述
  • 拷贝js文件,作为自己的本地资源
    百度地图提供的各种图层类,标记类,控件类等等都可以看作是modules,当你在地图中用到这些模块时,它会自动加载,因此我们需要先把这些模块的js文件下载下来,保存到本地。定位到下面代码,没数错的话,一共是41个模块。
    在紧邻着的下边找到在这里插入图片描述
    这时候就可以创建modules文件夹,添加所需模块的js文件,注意命名格式,js代码可以这么获取:http://api0.map.bdimg.com/getmodules?v=3.0&mod=map_bmtnyt
    如果获取不到也可以是http://api0.map.bdimg.com/getmodules?v=2.0&mod=map_bmtnyt
    保存js文件时文件名也是这样:map_bmtnyt.js
  • 修改相关引用的路径
    为了便于修改主文件里的一些内容,先创建一个map_load.js文件
var bmapcfg = {
    'imgext': '.jpg',   //瓦片图的后缀  根据需要修改,一般是 .png .jpg
    'tiles_dir': 'maptile/',       //普通瓦片图的地址,为空默认在maptile/ 目录
};

var scripts = document.getElementsByTagName("script");
var JS__FILE__ = scripts[scripts.length - 1].getAttribute("src");  //获得当前js文件路径
bmapcfg.home = JS__FILE__.substr(0, JS__FILE__.lastIndexOf("/") + 1); //地图API主目录
(function () {
    window.BMap_loadScriptTime = (new Date).getTime();
    //加载地图API主文件
    document.write('<script type="text/javascript" src="' + bmapcfg.home + 'apiv1.3.min.js"></script>');
})();
  • 修改地图api主目录——bmapcfg.home
    在apiv1.3.min.js文件中定位到 url.domain.main_domain_cdn.baidu[0] ,将其所在行注释掉,加上这行D.oa= bmapcfg.home; //修改成本地瓦片资源引用(离线路径)
    在这里插入图片描述
    这块参考自己的目录怎么安排 引对相对路径就OK了
  • 修改modules引用
    通过 &mod 进行定位,注释掉其所在行,做如下修改:
    在这里插入图片描述
    注释掉后加上:(pa和f.CK())对照起来
if( a.length > 0 ){
							for(i=0; i<a.length;i++){
								mf = '/map/modules/'+a[i]+'.js';
								pa( mf ); //该调用方法为 最开始加屏蔽ak验证 的那个方法,注意修改方法名是否更改
							}
							} else {
								f.CK();//注意看注释行 f调用的方法名
							}
  • 加载瓦片改为本地离线瓦片
    搜索normal,定位到下图。注释掉图中语句
    在这里插入图片描述

3.测试

写个html页面测试一下

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Hello, World</title>
    <style type="text/css">
        #container{height:800px;width: 100%;}
    </style>
 
    <script type="text/javascript" src="map_load.js"></script>
 
</head>
 
<body>
<div id="container"></div>
<script type="text/javascript">
    var map = new BMap.Map("container");                        // 创建Map实例
    var point = new BMap.Point(121.491, 31.233);  // 创建点坐标
    map.centerAndZoom(point, 8);                // 初始化地图,设置中心点坐标和地图级别
    map.setMinZoom(5);
    map.setMaxZoom(8);
    map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
    map.addControl(new BMap.NavigationControl()); //缩放按钮
    map.addControl(new BMap.ScaleControl());//显示地图的比例关系
</script>
</body>
</html>

在这里插入图片描述

<think>好的,我现在需要解决用户关于内网环境下部署Nginx以及传输安装包的问题。首先,我得回忆一下内网部署的一般流程,可能涉及离线安装和文件传输方法。用户提到他们想通过内网部署Nginx,并且需要传输安装包,所以应该考虑在没有互联网连接的情况下如何操作。 首先,安装包的传输。内网环境下,通常不能直接从互联网下载,所以需要从外网下载好安装包,然后通过U盘、移动硬盘或者内部网络传输到目标服务器。用户可能需要具体的步骤,比如如何下载依赖包,如何打包传输。这里需要注意依赖项的问题,因为Nginx可能需要一些库,比如PCRE、OpenSSL等,这些都需要提前准备好。 然后是安装过程。用户提供的引用中有提到配置命令,比如./configure --prefix=/usr/local/nginx,并且带有一些模块,比如--with-http_stub_status_module和--with-http_ssl_module。所以安装步骤应该包括解压安装包、配置、编译和安装。同时,用户可能遇到依赖缺失的问题,比如在配置时提示缺少PCRE库,这时候需要确保所有依赖已经正确安装。 接下来是配置和启动。引用中提到了配置内网域名转发,可能需要编辑nginx.conf文件,设置upstream或者server块来处理请求。之后用sudo nginx -s reload重新加载配置。这部分需要详细说明配置文件的修改位置和方法,确保用户能够正确设置转发规则。 可能遇到的问题包括依赖项缺失、权限问题、配置错误等。例如,在运行./configure时如果报错,可能需要检查gcc是否安装,或者PCRE、zlib等开发包是否存在。用户提供的引用里也提到了离线部署时遇到的依赖问题,所以需要强调提前下载所有依赖项。 最后,验证部署是否成功,比如通过curl访问本地端口,或者检查nginx进程是否运行。这部分可以指导用户进行基本的故障排除。 总结下来,回答需要分步骤:传输安装包、安装依赖、安装Nginx、配置、验证。同时,要包含常见问题的解决方法,帮助用户避免常见的坑。需要确保所有命令正确,路径正确,并且引用用户提供的配置示例,比如使用--prefix指定安装目录,以及配置模块的参数。</think>### 内网环境下Nginx部署及安装包传输方法 #### 一、安装包传输方法 1. **外网下载安装包及依赖** 在外网环境中下载以下文件: - Nginx安装包(如 `nginx-1.24.0.tar.gz`)[^1][^3] - 依赖库:PCRE、OpenSSL、zlib 的源码包(如 `pcre-8.45.tar.gz`, `openssl-3.0.0.tar.gz`) - 工具:gcc编译器(若目标服务器未预装) 2. **通过物理介质或内网传输** - 使用U盘、移动硬盘将文件复制到内网服务器; - 或通过内网文件共享服务(如SFTP、SCP)传输文件至目标服务器目录,例如 `/opt/nginx`。 --- #### 二、内网部署Nginx步骤 1. **安装依赖库** 解压并编译依赖项(需root权限): ```bash # 安装PCRE tar -zxvf pcre-8.45.tar.gz cd pcre-8.45 ./configure && make && make install # 安装OpenSSL tar -zxvf openssl-3.0.0.tar.gz cd openssl-3.0.0 ./config && make && make install ``` 2. **编译安装Nginx** ```bash tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0 ./configure --prefix=/usr/local/nginx \ --with-http_stub_status_module \ --with-http_ssl_module make && make install ``` 3. **配置内网域名转发** 编辑配置文件 `/usr/local/nginx/conf/nginx.conf`(或 `/etc/nginx/nginx.conf`[^2]),添加以下内容: ```nginx server { listen 80; server_name internal.example.com; location / { proxy_pass http://内网目标服务IP:端口; } } ``` 4. **启动与重载配置** ```bash # 启动Nginx /usr/local/nginx/sbin/nginx # 重载配置(修改后生效) sudo nginx -s reload [^2] ``` --- #### 三、常见问题解决 1. **依赖缺失报错** - 若出现 `C compiler cc is not found`,需安装gcc: ```bash # 离线安装gcc(需提前下载rpm包) rpm -ivh gcc-*.rpm ``` - 若提示PCRE库错误,检查 `./configure` 时是否指定路径: ```bash ./configure --with-pcre=/path/to/pcre-8.45 ``` 2. **权限问题** - 使用 `sudo` 执行安装命令; - 若监听80端口失败,尝试: ```bash setcap 'cap_net_bind_service=+ep' /usr/local/nginx/sbin/nginx ``` --- #### 四、验证部署 1. 检查Nginx进程: ```bash ps aux | grep nginx ``` 2. 访问内网服务: ```bash curl http://内网IP:80 ``` ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值