- 浏览: 229300 次
- 性别:
- 来自: beijing
文章分类
将TiandituLayer 加载到OpenLayers.js Grid类后。
OpenLayers.Layer.TiandituLayer = OpenLayers.Class(OpenLayers.Layer.Grid, { mapType : null, mirrorUrls : null, topLevel : null, bottomLevel : null, topLevelIndex : 0, bottomLevelIndex : 20, topTileFromX : -180, topTileFromY : 90, topTileToX : 180, topTileToY : -270, isBaseLayer : true, initialize : function(name, url, options) { options.topLevel = options.topLevel ? options.topLevel : this.topLevelIndex; options.bottomLevel = options.bottomLevel ? options.bottomLevel : this.bottomLevelIndex; options.maxResolution = this .getResolutionForLevel(options.topLevel); options.minResolution = this .getResolutionForLevel(options.bottomLevel); var newArguments = [ name, url, {}, options ]; OpenLayers.Layer.Grid.prototype.initialize.apply(this, newArguments); }, clone : function(obj) { if (obj == null) { obj = new OpenLayers.Layer.TDTLayer(this.name, this.url, this.options); } obj = OpenLayers.Layer.Grid.prototype.clone .apply(this, [ obj ]); return obj; }, getURL : function(bounds) { var level = this .getLevelForResolution(this.map.getResolution()); var coef = 360 / Math.pow(2, level); var x_num = this.topTileFromX < this.topTileToX ? Math .round((bounds.left - this.topTileFromX) / coef) : Math .round((this.topTileFromX - bounds.right) / coef); var y_num = this.topTileFromY < this.topTileToY ? Math .round((bounds.bottom - this.topTileFromY) / coef) : Math.round((this.topTileFromY - bounds.top) / coef); var type = this.mapType; if (type == "EMap") { if (level >= 2 && level <= 10) { type = "A0512_EMap"; } else if (level == 11 || level == 12) { type = "B0627_EMap1112"; } else if (level >= 13 && level <= 18) { type = "siwei0608"; } }else if(type=="RMap"){ if (level >= 2 && level <= 7) { type = "sbsm0210"; } else if (level >= 8 && level <= 10) { type = "sbsm0210"; } else if (level >= 11 && level <= 14) { type = "e11"; }else if (level >= 15 && level <= 18) { type = "sbsm1518"; } } var url = this.url; if (this.mirrorUrls != null) { url = this.selectUrl(x_num, this.mirrorUrls); } return this.getFullRequestString({ T : type, X : x_num, Y : y_num, L : level }, url); }, selectUrl : function(a, b) { return b[a % b.length] }, getLevelForResolution : function(res) { var ratio = this.getMaxResolution() / res; if (ratio < 1) return 0; for ( var level = 0; ratio / 2 >= 1;) { level++; ratio /= 2; } return level; }, getResolutionForLevel : function(level) { return 360 / 256 / Math.pow(2, level); }, getMaxResolution : function() { return this.getResolutionForLevel(this.topLevelIndex) }, getMinResolution : function() { return this.getResolutionForLevel(this.bottomLevelIndex) }, addTile : function(bounds, position) { var url = this.getURL(bounds); return new OpenLayers.Tile.Image(this, position, bounds, url, this.tileSize); }, CLASS_NAME : "OpenLayers.Layer.TiandituLayer" });
测试页面
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta name="apple-mobile-web-app-capable" content="yes"> <title>OpenLayers Tiled Map Service Example</title> <link rel="stylesheet" href="../theme/default/style.css" type="text/css"> <link rel="stylesheet" href="style.css" type="text/css"> <script src="../lib/OpenLayers.js"></script> <script type="text/javascript"> var map, layer; function init(){ var extent = new OpenLayers.Bounds(-180.0, -90.0, 180.0, 90.0); var tempScales = [295497593.05875003,147748796.52937502,73874398.264687508,36937199.132343754,18468599.566171877]; var mapOptions = { maxExtent: extent }; var options= { mapType:"EMap", topLevel: 3, bottomLevel: 20 }; map = new OpenLayers.Map("map",mapOptions); layer = new OpenLayers.Layer.TiandituLayer("qincy", "http://tile0.tianditu.com/DataServer",options); map.addLayer(layer); map.addControls([new OpenLayers.Control.MousePosition()]); map.setCenter(new OpenLayers.LonLat(106,39), 3); } </script> </head> <body onload="init()"> <div id="map" style="width:1000px;height:500px"></div> </body> </html>
补充问题,由于天地图12级别以后,标注与地图分离,所以要修改下geturldaim
加载两个图层一个图层设置成隐藏。
- Desktop.zip (3.1 KB)
- 下载次数: 75
发表评论
-
geoserver 在liunix 系统下 地图乱码问题解决
2013-01-04 13:20 1229... -
openscales1.2 实现加载arcgis 切片
2012-09-14 12:30 2484package org.openscales.core.lay ... -
利用工具将shp文件导入到oracle spatial中
2012-05-21 14:20 43871 下载shp2sdo 工具,将工具放在 oracle按照目录 ... -
oracle s
2012-06-20 09:18 965<pre name="code" c ... -
oracle spatial 空间数据学习
2012-05-17 16:09 1782最近项目使用 空间数据库 oracle spatial ... -
在ArcGIS 10 Desktop中打开Google Map,BingMap
2012-04-13 15:56 1548安装使用: 1 双击ArcBruTile_0.2.zip ... -
Arcgis object for java 访问栅格数据,使用GP工具,进行栅格矢量化---栅格矢量化面。
2012-06-20 09:17 4127直接贴代码了,不多解释了。 1、栅格数据的 ... -
ArcGIS客户端API中加载大量数据的几种解决办法
2012-06-20 09:18 3063原文地址:http://blog.newnaw.com/?p= ... -
arcgis server 服务
2012-01-06 17:58 1177package com.hdmap.fymas; imp ... -
ArcObject中的游标Cursor的理解
2011-05-04 10:48 1284cursor给人的第一 ... -
esri arcobj 开发for java
2011-04-15 14:04 10711、查找数据 1)、利用FeaturCursor进行空间查询 ... -
ESRI Flex GIS开发连载(1) ---环境搭建
2011-03-25 10:29 18651首先 用 argis server 发布一个 s ... -
table_border.html
2011-01-21 17:07 927<html> <head> ... -
jquery 菜单效果一个
2010-09-26 16:02 1161<html> <head> ... -
ExtJs layout
2010-07-20 15:20 1337extjs的容器组件都可以设置它的显示风格,它的有效值有 ab ... -
验证验证
2010-05-28 15:40 922匹配中文字符的正则表 ... -
jquery validate.js x学习
2010-04-12 16:05 1254学习了 jquery validate.js ... -
CSS 定义鼠标的样式
2009-12-17 15:33 1689CSS允许你控制网页外观 ... -
学习AJAX框架后的理解
2009-11-25 14:20 1003现在很多的AJAX框架,表现的是很优秀恩 不大可能一下就 ... -
jquey中的$符号与其他框架的$的冲突解决方法
2009-11-25 12:39 1013Jquery 中的$(id)方法来获取一个元素,或者其他的一些 ...
相关推荐
- 实现`TileProvider`接口,重写`getTile`方法,动态构造谷歌卫星图瓦片的URL,并使用HTTP请求获取图片数据。 - 将返回的Bitmap对象添加到TileOverlay,显示在地图上。 3. **缓存谷歌卫星瓦片**: - 为了提高...
本文将深入探讨如何利用ArcGIS API for JavaScript 4.10版本加载天地图,包括其矢量底图、影像地图和地形图。我们将讨论如何自定义图层模块,通过扩展BaseTileLayer来实现这一目标。 首先,ArcGIS API for ...
在这个类中,我们将重写必要的方法,如`fetchTile`,以便从百度地图的服务器获取瓦片数据。同时,我们还需要处理百度地图特有的坐标系统转换,因为百度地图使用的是自己的坐标系,而ArcGIS API通常使用Web Mercator...
JAVA中的方法重写与方法重载区别 JAVA 中的方法重写和方法重载是两个重要的概念,在面向对象程序设计语言中尤为重要。方法重写和方法重载都是多态性的体现,但它们之间有着本质的区别。 方法重写(Override)是指...
4. **重写fetchTile方法**:BaseTileLayer的fetchTile方法负责获取和加载瓦片。我们需要覆盖这个方法,根据谷歌地图的URL模板请求对应的瓦片,并将它们插入到地图中。 5. **事件处理**:为了确保地图的正常交互,...
默认情况下,`sort`方法按照数据的自然顺序进行排序,但通过重写这个方法,我们可以根据特定的规则或者字段进行定制排序。 首先,为了实现自定义排序,我们需要在自定义的`QAbstractTableModel`子类中重写`sort`...
4. 当需要加载更多数据时,实例化AsyncTask并调用execute()方法。 对比两种方法,Handler+线程更灵活,适用于复杂的异步通信,而AsyncTask则更加简洁,适合简单的后台任务。实际开发中可以根据项目需求和性能要求...
Qt的QTableView支持数据模型的虚拟化,通过设置`setViewportSize()`和`setRootIndex()`等方法,可以控制视图区域大小和数据的显示范围,从而实现按需加载。 3. **异步加载**:为了提供流畅的用户体验,数据加载应该...
ArcGIS for Flex API允许我们创建自定义图层,通过重写`TileInfo`、`getTileUrl`等方法,我们可以将高德地图的瓦片服务集成进来。创建一个新的类,继承自`esri.layers.ArcGISTiledMapServiceLayer`或`esri.layers....
在`onScroll()`方法中,我们可以检查当前是否已经滚动到了最后一行,如果是,则触发加载更多数据的操作。 ```java gridView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void ...
Java 子类重写父类的方法详细解析 Java 中子类重写父类的方法是面向对象编程的核心概念之一。子类可以重写父类的方法,以改变或扩展父类的行为。但是,子类重写父类的方法需要遵守一定的规则,以避免编译器错误和...
### 静态(static)方法与重写(override) #### 一、概念解析 在面向对象编程语言中,如Java,方法重写(override)是一种重要的特性,它允许子类提供一个与父类相同签名的方法实现。这种方法的实现允许在运行时...
在编程语言中,方法重载(Overloading)和方法重写(Overriding)是两个非常重要的概念,它们都是实现多态性(Polymorphism)的关键机制。本文将深入探讨这两个概念,以及它们在实际编程中的应用。 ### 方法重载...
天地图是中国官方的地理信息服务,加载天地图需要使用其提供的瓦片服务。配置代码如下: ```javascript var tianDiTuLayer = new ol.layer.Tile({ source: new ol.source.XYZ({ url: '...
在Java编程语言中,"重写ZipCom方法"通常指的是我们对Java标准库中的`java.util.zip`包中的某些类或方法进行自定义扩展,以满足特定的压缩和解压缩需求。SOAP(Simple Object Access Protocol)是一种基于XML的协议...
关于重写equals、hashcode以及compareTo方法! equals()方法是Object类中的一个方法,它用于比较两个对象是否相等。然而,它的默认实现是比较对象的引用(地址),而不是比较对象的实际内容。因此,在某些情况下,...
2. **自定义PagerAdapter**:继承`FragmentPagerAdapter`并重写`instantiateItem()`方法,在这里判断当前创建的`Fragment`是否为最后一个,如果是,则调用`Fragment`的`loadData()`方法加载数据。 3. **设置...
自定义Adapter需要继承自BaseAdapter或ArrayAdapter,并重写其中的方法,如`getView()`,将解析后的数据转化为ListView可显示的View。通常会涉及到视图复用(convertView)以提高性能。 7. 数据缓存: 为了提高...
当用户滚动到ListView的底部时,自动加载更多数据的功能通常被称为“无限滚动”或“下拉加载更多”。这种功能可以提升用户体验,避免用户手动翻页。下面我们将详细讨论如何在Android中实现这个功能。 首先,你需要...