因为项目需要,只有内网环境,没有外网环境,所以需要下载地图瓦片。

一.下载瓦片地图

这个可以自行在网上找一些地图瓦片下载器,下好的瓦片地图是分级的。大概如图这种类型。

二.在地图上显示标记

首先使用openlayers加载离线地图瓦片。这里我用的nginx弄了给静态图片服务器。

// 自定义分辨率和瓦片坐标系
var resolutions = [];
var maxZoom = 18; // 计算百度使用的分辨率
for (var i = 0; i <= maxZoom; i++) {
resolutions[i] = Math.pow(2, maxZoom - i);
}
var tilegrid = new ol.tilegrid.TileGrid({
origin: [0, 0],
resolutions: resolutions // 设置分辨率
}); // 创建百度地图的数据源
var baiduSource = new ol.source.TileImage({
projection: 'EPSG:3857',
tileGrid: tilegrid,
tileUrlFunction: function (tileCoord, pixelRatio, proj) {
var z = tileCoord[0];
var x = tileCoord[1];
var y = tileCoord[2]; // 百度瓦片服务url将负数使用M前缀来标识
if (x < 0) {
x = -x;
}
if (y < 0) {
y = -y;
} return "http://localhost:8008/123456789/" + z + "/" + x + "/" + y + ".png";
}
}); // 百度地图层
var baiduMapLayer2 = new ol.layer.Tile({
source: baiduSource
}); // 创建地图
var map =new ol.Map({
layers: [
baiduMapLayer2
],
view: new ol.View({
// 设置成都为地图中心
center: ol.proj.transform([104.06, 30.67], 'EPSG:4326', 'EPSG:3857'),
/*extent: [53, 4, 73 ,135],*/
zoom: 6,
minZoom:1,
maxZoom:10
}),
target: 'mainMap'
});

创建矢量图层,获取数据库中的所有点,用一个小图标在地图上标记出来。

// 百度地图层
var baiduMapLayer2 = new ol.layer.Tile({
source: baiduSource
}); // 创建地图
var map =new ol.Map({
layers: [
baiduMapLayer2
],
view: new ol.View({
// 设置成都为地图中心
center: ol.proj.transform([104.06, 30.67], 'EPSG:4326', 'EPSG:3857'),
/*extent: [53, 4, 73 ,135],*/
zoom: 6,
minZoom:1,
maxZoom:10
}),
target: 'mainMap'
}); //创建图标样式
var iconStyle = new ol.style.Style({
image: new ol.style.Icon({
opacity: 0.75,
src: "http://localhost:8008/tubiao.png"
}),
}); var vectorSource = new ol.source.Vector({ }); $.ajax({
url: "/map/getAllMap",
type: "get",
dataType: "json",
data: {"page": 1, "rows": 100},
success: function (data) {
$(data).each(function (index, item) {
markp(item.lng,item.lat);
});
},
error: function () { }
}) function markp(lng,lat) {
//创建图标特性
var iconFeature = new ol.Feature({
geometry: new ol.geom.Point(ol.proj.fromLonLat([parseFloat(lng), parseFloat(lat)])),
name: "my Icon"
});
//将图标特性添加进矢量中
vectorSource.addFeature(iconFeature);
} //创建矢量层
var vectorLayer = new ol.layer.Vector({
source: vectorSource,
style: iconStyle
});
//添加进map层
map.addLayer(vectorLayer);

效果图:

WebGIS开发之用openlayers加载离线百度地图的更多相关文章

  1. android快捷开发之Retrofit网络加载框架的简单使用

    大家都知道,安卓最大的特点就是开源化,这自然会产生很多十分好用的第三方API,而基本每一个APP都会与网络操作和缓存处理机制打交道,当然,你可以自己通过HttpUrlConnection再通过返回数据 ...

  2. iOS开发之SceneKit框架--加载多个模型.dae/.scn文件

    1.通过SCNGeometry或子类SCNParametricGeometry创建 相关链接:iOS开发之SceneKit框架--SCNGeometry.h iOS开发之SceneKit框架--SCN ...

  3. CAD数据分块,偏移校准,加载到百度地图、高德地图、谷歌等地图上

    前面分享过一篇如何将CAD海量数据显示在百度地图上(百度地图Canvas实现十万CAD数据秒级加载),但是很多开发者在CAD数据提取时遇到了问题,所以接下来的文章将介绍如何将CAD数据提取. 准备软件 ...

  4. OpenLayers加载百度离线瓦片地图(完美无偏移)

    本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer完美无偏移加载百度离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/ope ...

  5. OpenLayers加载QQ地图(转)

    OpenLayers加载QQ地图 http://www.openlayers.cn/portal.php?mod=view&aid=4 2012-10-21 17:22| 发布者: admin ...

  6. OpenLayers学习笔记(一)—在线加载谷歌影像地图&离线加载本地瓦片地图

    实现根据在线离线判断加载地图, 在线加载谷歌影响地图, 离线加载本地瓦片地图 作者: 狐狸家的鱼 Github: 八至 html代码 <div id="map" tabind ...

  7. openlayers 加载瓦片详解 一

    在这先说点题外话,本人在研究webgl 三维球过程中惊人发现,openlayers 的开发人员也在研究webgl并经证实他们也正在研发基于 webgl的三维gis开源平台,这可能是首个开源的三维平台, ...

  8. openlayers加载天地图过程中遇到跨域问题

    // 采用openlayers加载天地图 var layer = new ol.layer.Tile({ source: new ol.source.XYZ({ // crossOrigin: 'An ...

  9. C#开发BIMFACE系列48 Nginx部署并加载离线数据包

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列47 IIS部署并加载离线数据包>中详细介绍了IIS部署并访问的完整步 ...

随机推荐

  1. 监控linux各主机系统时间是否一致

    #!/bin/bashSTATE_OK=0 STATE_WARNING=1 STATE_CRITICAL=2 STATE_UNKNOWN=3PASSWD='**************'print_h ...

  2. ios之自定义UISwitch

    系统自带的UISwitch是这样的: 既不能写字,也不能改颜色,于是在网上找到了这么一个自定义的Switch按钮,具体出处找不见了.记录一下,怕以后找不见了. 先看下效果图: 按钮的样式很多,可以文字 ...

  3. GIMP用Path作画了解一下

    先准备好Path的底稿,只是实验学到的东西,粗糙了点.Paint through the Path,顾名思义,就是沿着Path作画: 1/如果选择的是Stroke line,可以根据自己的喜好,调节S ...

  4. grafana绘制图表

    安装方法 系统为ubuntu16 1首先添加以下到/etc/apt/sources.list: deb https://packagecloud.io/grafana/stable/debian/ s ...

  5. CSS3-盒模型-resize属性

    作用:用来改变元素尺寸大小. 1.resize:none|both|horizontal|vertical|inherit none:不能拖动修改尺寸大小 both:可以拖动元素,修改元素宽高 hor ...

  6. perl学习笔记之:模式匹配,模块,文档

    Perl语言的最大特点,也是Perl作为CGI首选语言的最大特点,是它的模式匹配操作符.Perl语言的强大的文本处理能力正是通过其内嵌的对模式匹配的支持体现的.模式通过创建正则表达式实现.Perl的正 ...

  7. docker apache安装

    文章来源: 1.添加镜像 # docker pull httpd2. 2.创建httpd文件 # mkdir /data/httpd2. 3.启动apache # docker run -it -p ...

  8. 总线(bus);设备(devices);驱动(drivers)

    Linux Cross Reference Free Electrons Embedded Linux Experts • Source Navigation  • Diff Markup  • Id ...

  9. Action的实现方式

    [Pojo方式] 1.概述 Pojo(Plain Ordinary Java Object)称为简单Java类,其实就是一个JavaBean. 2.示例 /** * Pojo类方式实现Action * ...

  10. linux救援

    1.单用户模式(类比win的安全模式) 1.1.开机按任意键 1.2.按E进入编辑模式 1.3.光标移动到第二个(“kernel xxxx”)按e 1.4.在quiet 后面输入“ 1” or “S” ...