OpenLayers 加载一幅地图

摘要

         在浏览器中加载一幅地图,而且是可交互(包含缩放、平移、查询和分析等高级功能)的,该怎么做呢?我们当然知道要想网页中的内容是动态的,可交互的,要使用JavaScript,地图应用也不例外,不过要从底层开发的话,要费老鼻子的劲儿了!OpenLayers便是一个减轻你的工作量的框架,利用它可以轻松地加载一幅动态可交互的地图到浏览器中!

         下面便是一个利用OpenLayers加载地图的小例子,我们先看看运行结果,并分析一下原理,捋一捋源码!

正文

例程如下:

[html]  view plain  copy
  1. <!doctype html>  
  2. <html lang="en">  
  3.   <head>  
  4.     <link rel="stylesheet" href="http://openlayers.org/en/v3.3.0/css/ol.css" type="text/css">  
  5.     <style>  
  6.       .map {  
  7.         height: 400px;  
  8.         width: 100%;  
  9.       }  
  10.     </style>  
  11.     <script src="http://openlayers.org/en/v3.3.0/build/ol.js" type="text/javascript"></script>  
  12.     <title>OpenLayers 3 example</title>  
  13.   </head>  
  14.   <body>  
  15.     <h2>My Map</h2>  
  16.     <div id="map" class="map"></div>  
  17.     <script type="text/javascript">  
  18.       var map = new ol.Map({  
  19.         target: 'map',  
  20.         layers: [  
  21.           new ol.layer.Tile({  
  22.             source: new ol.source.MapQuest({layer: 'sat'})  
  23.           })  
  24.         ],  
  25.         view: new ol.View({  
  26.           center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),  
  27.           zoom: 4  
  28.         })  
  29.       });  
  30.     </script>  
  31.   </body>  
  32. </html>  

在浏览器中打开,Duang  Duang  Duang  。。 。 - -| ,运行结果如下:


为什会有这些效果,咱来个庖丁解牛,分解分解,捋一捋!这是一个普通的Html网页,没错,但是它引用了OpenLayers的CSS样式和js文件:

[html]  view plain  copy
  1. <link rel="stylesheet" href="http://openlayers.org/en/v3.3.0/css/ol.css" type="text/css">  
[html]  view plain  copy
  1. <script src="http://openlayers.org/en/v3.3.0/build/ol.js" type="text/javascript"></script>  

然后又扯了一段代码:

[html]  view plain  copy
  1. <script type="text/javascript">  
  2.       var map = new ol.Map({  
  3.         target: 'map',  
  4.         layers: [  
  5.           new ol.layer.Tile({  
  6.             source: new ol.source.MapQuest({layer: 'sat'})  
  7.           })  
  8.         ],  
  9.         view: new ol.View({  
  10.           center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),  
  11.           zoom: 4  
  12.         })  
  13.       });  
  14. </script>  

在这段代码中,主要是实例化了一个OpenLayers的Map对象,于是就显示了地图!Map是何许人也?它是OpenLayers中最主要的对象!要初始化一幅地图,需要一个view,一个或多个图层(layers),一个目标容器(target)。在GitHub上的OpenLayers主页上的Map定义可以看到:

[html]  view plain  copy
  1. ol.MapProperty = {  
  2.   LAYERGROUP: 'layergroup',  
  3.   SIZE: 'size',  
  4.   TARGET: 'target',  
  5.   VIEW: 'view'  
  6. };  

定义了一个数组,主要有layers、target和view,代表map对象 的三个主要属性。

[html]  view plain  copy
  1. ol.Map.prototype.getTarget = function() {  
  2.   return /** @type {Element|string|undefined} */ (this.get(ol.MapProperty.TARGET));  
  3. };  
  4. goog.exportProperty(  
  5.   ol.Map.prototype,  
  6.   'getTarget',  
  7.   ol.Map.prototype.getTarget);  

getTarget主要是取得以上的数组的TARGET属性值,而exportProperty是Google的Closure库的一个函数,函数原型是:


[html]  view plain  copy
  1. goog.exportProperty = function(object, publicName, symbol) {  
  2.   object[publicName] = symbol;  
  3. };  

就是将一个自定义的属性symbol导出到object定义的对象中,而publicName就是导入后的属性名。

[html]  view plain  copy
  1. ol.Map.prototype.getTargetElement = function() {  
  2.   var target = this.getTarget();  
  3.   return goog.isDef(target) ? goog.dom.getElement(target) : null;  
  4. };  

根据id名来找到放置map的HTML元素。

[html]  view plain  copy
  1. ol.Map.prototype.getLayerGroup = function() {  
  2.   return /** @type {ol.layer.Group} */ (this.get(ol.MapProperty.LAYERGROUP));  
  3. };  
  4. goog.exportProperty(  
  5.   ol.Map.prototype,  
  6.   'getLayerGroup',  
  7. ol.Map.prototype.getLayerGroup);  

这便是和以上同理,将layerGroup初始化!

[html]  view plain  copy
  1. layers: [  
  2.   new ol.layer.Tile({  
  3.     source: new ol.source.MapQuest({layer: 'sat'})  
  4.   })  
  5. ]  
用OpenLayers提供的瓦片作为Map的图层,取用名称为“sat”的图层。

[html]  view plain  copy
  1. ol.Map.prototype.getView = function() {  
  2.   return /** @type {ol.View} */ (this.get(ol.MapProperty.VIEW));  
  3. };  
  4. goog.exportProperty(  
  5.   ol.Map.prototype,  
  6.   'getView',  
  7.   ol.Map.prototype.getView);  

同理,初始化view。

[html]  view plain  copy
  1. view: new ol.View({  
  2.   center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),  
  3.   zoom: 4  
  4. })  
设置一些视区的参数,其中center是设置地图中心,transform函数是将给定的坐标从4326转到3857坐标系下,4326即是WGS84坐标系!zoom参数是设置缩放等级!

### 回答1: OpenLayers是一个用于显示地理信息的开源JavaScript库。要加载本地路径地图,首先需要将地图文件保存在本地计算机上。然后,可以通过以下步骤使用OpenLayers加载本地路径地图: 1. 在HTML文件中引入OpenLayers的JavaScript库。可以通过在网页的<head>标签内添加以下代码实现: ```html <script src="https://openlayers.org/en/v6.5.0/build/ol.js"></script> ``` 2. 在代码中创建一个用于显示地图的<div>元素。例如: ```html <div id="map" style="width: 800px; height: 600px;"></div> ``` 3. 在JavaScript代码中编写加载本地路径地图的步骤。首先,创建一个地图实例,并指定要显示地图的目标元素。然后,创建用于显示地图的图层,例如OpenStreetMap图层。最后,将图层添加到地图实例中。以下是一个简单的示例: ```javascript var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: ol.proj.fromLonLat([0, 0]), zoom: 2 }) }); ``` 4. 运行代码,打开包含HTML文件的浏览器页面。现在,应该能够加载并显示本地路径地图了。 注意:加载本地路径地图可能需要一些额外的步骤,例如配置本地web服务器或处理文件路径。此外,OpenLayers还提供了许多其他功能和选项,可以根据需求进行配置和定制。 ### 回答2: OpenLayers是一个用于在网页上展示地图的开源JavaScript库,它支持加载本地路径地图。要加载本地路径地图,首先需要将地图切片存储在本地的文件系统中。切片是将整个地图区域分成一系列小块的图像,以提高地图显示效 ### 回答3: OpenLayers 是一个开源的地图库,可以用于加载和显示各种地图数据。要加载本地路径地图,需要按照以下步骤进行操作: 1. 准备地图数据:首先,将本地的地图数据准备好。这可以是一个图像文件(如JPEG、PNG等),也可以是一个矢量文件(如GeoJSON、KML等)。 2. 创建地图容器:在 HTML 页面中,创建一个用于显示地图的容器元素,例如一个 `<div>`元素,并为其指定一个唯一的ID。 3. 加载地图数据:使用 OpenLayers 的 `ol.source.Image` 或 `ol.source.Vector`类,根据地图数据的类型,创建一个相应的数据源。例如,如果是图像文件,可以使用 `ol.source.ImageStatic` 类,并指定图像文件的路径。如果是矢量文件,可以使用 `ol.source.Vector` 类,并使用 `ol.format` 类来解析和加载矢量数据。 4. 创建地图图层:使用 `ol.layer.Image` 或 `ol.layer.Vector` 类,创建一个相应的图层,并将数据源与图层关联起来。 5. 创建地图对象:使用 `ol.Map` 类,创建一个地图对象。将之前创建的地图容器元素和图层添加到地图对象中。 6. 显示地图:将地图对象绑定到地图容器元素上,使用 `map.setTarget(containerID)` 方法。 经过以上步骤,就可以加载本地路径地图并在网页上显示了。可以根据需要,设置地图的初始视图、缩放级别、交互功能等,以实现更多的地图交互操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值