原先发在了OpenLayers中文网,交流的人很少,所有又发到这里。
之前看了一些继承自TileCache的实现,这里也发一下自己的实现,继承自XYZ类。接触OpenLayers时间不长,没有实际项目应用经验,有理解不清的地方还望各位多多指教,谢谢!
/* Copyright (c) 2002-2012 by fiftyk*/ /** * @requires OpenLayers/Layer/XYZ.js */ /** * @class */ OpenLayers.Layer.GMapLayer = OpenLayers.Class(OpenLayers.Layer.XYZ, { wrapDateLine:true, sphericalMercator:true, urlTpl:"&hl=zh-CN&gl=CN&src=app&x=${x}&y=${y}&z=${z}", /** * @constructor * @param {String} name * @param {String} url * @param {Object} options */ initialize:function(name,url,options){ options = OpenLayers.Util.applyDefaults({}, options); OpenLayers.Layer.XYZ.prototype.initialize.apply(this, [name,url,options]); }, getURL: function (bounds) { var xyz = this.getXYZ(bounds); var url = this.url; if (OpenLayers.Util.isArray(url)) { var s = '' + xyz.x + xyz.y + xyz.z; url = this.selectUrl(s, url) + this.urlTpl; } return OpenLayers.String.format(url, xyz); }, destory:function(){ this.sphericalMercator = null; this.urlTpl = null; OpenLayers.Layer.XYZ.prototype.destroy.apply(this, arguments); }, clone:function(obj){ if(obj == null){ obj = new OpenLayers.Layer.GMapLayer(this.name,this.url, this.getOptions()); } obj = OpenLayers.Layer.XYZ.prototype.clone.apply(this,[obj]); return obj; }, getXYZ:function(bounds){ var res = this.getServerResolution(); var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w)); var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h)); var z = this.getServerZoom();//继承自Grid if (this.wrapDateLine) { var limit = Math.pow(2, z); x = ((x % limit) + limit) % limit; } return {'x': x, 'y': y, 'z': z}; }, CLASS_NAME: "OpenLayers.Layer.GMapLayer" });
使用:
var map = new OpenLayers.Map("map",{ layers:[ new OpenLayers.Layer.GMapLayer("Google卫星图层", ["http://mt1.google.cn/vt/lyrs=s@123"]), new OpenLayers.Layer.GMapLayer("Google标注图层", ["http://mt2.google.cn/vt/imgtp=png32&lyrs=h@205000000"]), new OpenLayers.Layer.GMapLayer("Google矢量图层", ["http://mt1.google.cn/vt/lyrs=m@205000000"]), new OpenLayers.Layer.GMapLayer("Google地形图层", ["http://mt1.google.cn/vt/lyrs=t@130,r@205000000"]), new OpenLayers.Layer.GMapLayer("Google路况图层", ["http://mt0.google.com/vt?lyrs=m@205000000,traffic|seconds_into_week:-1"]) ] ,center:new OpenLayers.LonLat(120.30549379552448,31.55342767838905), }); //图层切换控件 map.addControl(new OpenLayers.Control.LayerSwitcher()); //鹰眼控件 map.addControl(new OpenLayers.Control.OverviewMap());
相关推荐
OpenLayers3加载谷歌地图,加载谷歌地图显示,实现效果很好,放大比例尺也能看得清楚。文章链接:https://blog.csdn.net/Gary_888/article/details/89914290
本教程将详细介绍如何使用OpenLayers加载瓦片地图以及手动在地图上标记坐标点。 一、OpenLayers 瓦片地图 瓦片地图是一种常见的地图展示方式,它将大尺寸的地图分割成多个小块(即“瓦片”),每个瓦片都是一个较...
在本案例中,我们讨论的是如何利用OpenLayers 5来加载谷歌地图。对于初学者来说,这是一个很好的起点,因为OpenLayers提供了丰富的API和强大的功能。 首先,我们要了解OpenLayers 5的基本概念。OpenLayers 5的核心...
本案例的主题是“openlayers加载本地离线底图瓦片google数据直接运行即可”,这意味着我们可以通过OpenLayers加载已经下载好的Google Maps离线瓦片数据。离线地图瓦片是一种将大型地图分割成许多小块图片(通常为256...
在本示例中,我们将关注如何加载并显示谷歌地图的离线切片。 谷歌地图通常由一系列的图像切片组成,这些切片按照特定的层级和坐标系统进行组织。在OpenLayers 3中,我们可以通过创建一个新的TileLayer,并定义其源...
在WebGIS开发中,OpenLayers 3 是一个强大的开源JavaScript库,用于在网页上创建交互式的...提供的代码示例展示了如何加载百度地图、天地图、高德地图和Google地图,这些资源对于WebGIS开发者来说是非常实用的参考。
这些切片通常按照特定的层级结构组织,如谷歌地图的ZXY格式,其中Z表示层级,X和Y分别表示行和列的索引。 在OpenLayers中,加载本地切片涉及到以下几个关键步骤: 1. **配置地图投影**:地图切片的坐标系统应与...
【标题】"openlayers加载google微信影像,完整demo,可直接使用浏览器运行"涉及的关键知识点主要集中在OpenLayers库以及WebGIS应用上。OpenLayers是一个开源的JavaScript库,它允许开发者在网页上创建交互式的地图...
在本主题中,我们将深入探讨如何使用OpenLayers3,一个流行的JavaScript库,来加载KML(Keyhole Markup Language)地图,并实现地图上的框选功能。KML是一种用于存储地理标记数据的XML格式,常用于Google Earth和...
每个都有其优缺点,例如谷歌地图提供强大的地图服务但可能需要付费,而OpenStreetMap是开源的,但可能需要更多的自定义工作。 地图偏移问题主要出现在基于不同坐标系统的地图数据上。地球表面被数学化地表示为平面...
创建谷歌地图效果,OpenLayers提供了兼容Google Maps的图层类型。 OpenLayers API和类用于画点、线、面,如`OpenLayers.Geometry.Point`, `OpenLayers.Geometry.LineString`, `OpenLayers.Geometry.Polygon`。 ...
此外,还需要结合地图服务,如Google Maps API或OpenStreetMap,获取实际的地图瓦片。对于后端,可能需要用到TileServer或自建地图瓦片服务,以提供瓦片数据。 总的来说,瓦片地图的实现涉及地图数据的分割、缓存...
运行修改后的OpenLayers示例,你将看到ArcGIS Server WMS服务提供的地图层被成功加载到网页中。如果想要添加更多图层,只需重复上述步骤,为每个图层调整相应的参数。 此外,OpenLayers还支持其他服务类型,如REST...
虽然谷歌地图没有官方的WMS服务,但开发者可以借助第三方工具或技术,如TileLayer插件,将谷歌地图的瓦片转换为WMS格式,实现与Mapbox WMS的兼容。 在使用Mapbox WMS时,你需要理解WMS的工作原理:客户端发送请求到...
你可以根据需要替换其他地图源,如Google Maps或Bing Maps,或者添加自定义图层。 此外,Vue和OpenLayers结合的好处在于,你可以利用Vue的状态管理(如Vuex)和响应式特性,实现更复杂的功能,如动态加载图层、添加...
7. 地图服务集成:OpenLayers 可以与各种地图服务提供商(如Google Maps、Bing Maps、OpenStreetMap等)集成,展示不同来源的地图数据。 8. 数据源的动态加载和更新:OpenLayers 支持实时数据的加载和更新,这在...
首先,OpenLayers是一个JavaScript库,它允许开发者将地图数据与Web页面整合,支持多种地图服务提供商,如Google Maps、Bing Maps、OpenStreetMap等。这个库提供了丰富的API,可以处理地图的加载、缩放、平移、图层...
它支持多种地图服务,包括谷歌地图。 首先,我们需要准备以下两个基本元素: 1. **OpenLayers库**:从OpenLayers的官方网站(http://www.openlayers.org)下载最新的压缩包。在这个示例中,使用的版本是OpenLayers...
- 加载地图源:如谷歌地图源或其他地图服务。 - 创建图层:将地图源绑定到图层。 - 添加图层到地图:将图层添加到地图实例。 示例代码如下: ```javascript var map = new ol.Map({ target: 'map', view: new ol...
- **瓦片(Tiles)**:OpenLayers可以使用瓦片服务来提高地图加载速度,将大地图分割成小块加载。 2. **OpenLayers的使用步骤**: - **引入库文件**:在HTML文件中添加OpenLayers库的链接。 - **创建Map对象**:...