<html> 
    <head> 
        <title>切片浏览</title> 
        <link rel="stylesheet" href="css/style.css" type="text/css" /> 
        <script src="js/OpenLayers.js"></script> 
        <script src="js/Config.js"></script>
        <script src="js/ajax.js"></script>
  <style type="text/css">
      .olImageLoadError {

background-color: transparent !important;
                 display:none;
            }

</style>
        <script type="text/javascript">

var map, layer; //complex object of type OpenLayers.Map

var proj = new OpenLayers.Projection("EPSG:4326");
            var mapproj = new OpenLayers.Projection("EPSG:104000");
            //Initialise the 'map' object  
            function init() {

var imageUrl = GetParamValue("strImageUrl", strImageUrl);
                var extentbak = new OpenLayers.Bounds(0, -90, 180, 90);
                var extent = new OpenLayers.Bounds(
                       116.67871, 34.47558, 117.97167, 35.35058
                   );
                //extent.transform(proj, mapproj);
               // extentbak.transform(proj, mapproj);
                var extentbak2 = new OpenLayers.Bounds(13348809.744547672, 3500204.402117868, 13409959.366471555, 3561506.9011374912);
                extentbak2.transform(mapproj, proj);
                map = new OpenLayers.Map("map", {
                    maxExtent: extentbak,
                    // restrictedExtent: extent,
                    maxResolution: 0.000976566472126202, // corresponds to level 8 in the cache
                    numZoomLevels: 10,
                    units: 'degrees',
                    projection: "EPSG:104000",
                    tileOrigin: {lat:45,lon:0}
                    // displayProjection: new OpenLayers.Projection("EPSG:4326")

});

layer = new OpenLayers.Layer.TMS("Name",
                        imageUrl, {
                            'type': 'png',
                            'getURL': getUrl//get_my_url
                        });
                map.tileSize = new OpenLayers.Size(256, 256);
                layer.setTileSize(new OpenLayers.Size(256, 256))
               
                var vectorLayer = new OpenLayers.Layer.Vector("vector");
                //创建Geometry对象
                var point = new OpenLayers.Geometry.Point(119.9143982, 30.4486737);
                point.transform(proj, mapproj);
                //创建Feature对象
                var fea = new OpenLayers.Feature.Vector(point);
                //把Feature对象添加到图层
                vectorLayer.addFeatures(fea);
                var point = new OpenLayers.Geometry.Point(120.4637146, 30.4486737);
                point.transform(proj, mapproj);
                //创建Feature对象
                var fea = new OpenLayers.Feature.Vector(point);
                vectorLayer.addFeatures(fea);

var point = new OpenLayers.Geometry.Point(119.9143982, 29.9751599);
                point.transform(proj, mapproj);
                //创建Feature对象
                var fea = new OpenLayers.Feature.Vector(point);
                //把Feature对象添加到图层
                vectorLayer.addFeatures(fea);
                var point = new OpenLayers.Geometry.Point(120.4637146, 29.9751599);
                point.transform(proj, mapproj);
                //创建Feature对象
                var fea = new OpenLayers.Feature.Vector(point);
                vectorLayer.addFeatures(fea)

var point = new OpenLayers.Geometry.Point(120.145315, 30.199747);
                point.transform(proj, mapproj);
                //创建Feature对象
                var fea = new OpenLayers.Feature.Vector(point);
                vectorLayer.addFeatures(fea)

map.addControl(new OpenLayers.Control.MousePosition());
                map.addLayers([layer, vectorLayer])

map.addControl(new OpenLayers.Control.PanZoomBar());
                map.events.register("click", null, function (e) {
                    var ContextLonLat = map.getLonLatFromPixel(new OpenLayers.Pixel(e.x, e.y));
                    alert(ContextLonLat.lon + " " + ContextLonLat.lat);
                    // Geo.Map.DrawCtrl.DrawStartEndPoint(ContextLonLat.lon, ContextLonLat.lat, "images/img/ico_start1.png");
                });
                var lonLat = new OpenLayers.LonLat(119.9143982, 30.4486737);
                lonLat.transform(map.displayProjection, map.getProjectionObject());
                map.setCenter(lonLat, parseInt(0));

getlanguage();

}
     function getUpperLeftTileCoord(res) {
        var upperLeft = new OpenLayers.Geometry.Point(
            map.maxExtent.left,
            map.maxExtent.top);
        return getContainingTileCoords(upperLeft, res);
    }
  function getLowerRightTileCoord(res) {
        var bottomRight = new OpenLayers.Geometry.Point(
            map.maxExtent.right,
            map.maxExtent.bottom);
        return getContainingTileCoords(bottomRight, res);
    }
    function  getContainingTileCoords(point, res) {
        return new OpenLayers.Pixel(
           Math.max(Math.floor((point.x - map.tileOrigin.lon) / (map.tileSize.w * res)),0),
           Math.max(Math.floor((map.tileOrigin.lat - point.y) / (map.tileSize.h * res)),0)
        );
    }

function getUrl(bounds) {
            var res = this.getResolution();
     
            var originTileX = (this.tileOrigin.lon + (res * this.tileSize.w/2));
            var originTileY = Math.abs((0+(res * this.tileSize.h/2)));
      //originTileY=0;
      var z = this.map.getZoom();
     
            var center = bounds.getCenterLonLat();
            var point = { x: center.lon, y: center.lat };
  
            var x = (Math.round(Math.abs((center.lon - originTileX) / (res * this.tileSize.w))));
            var y = (Math.round(Math.abs((center.lat-originTileY) / (res * this.tileSize.h))));

// this prevents us from getting pink tiles (non-existant tiles)
            if (this.lods) {       
                var lod = this.lods[this.map.getZoom()];
                if ((x < lod.startTileCol || x > lod.endTileCol)
                    || (y < lod.startTileRow || y > lod.endTileRow)) {
                        return null;
                }
            }
            else {
                var start = getUpperLeftTileCoord(res);
                var end = getLowerRightTileCoord(res);
                if ((x < start.x || x >= end.x)
                    || (y < start.y || y >= end.y)) {
                        return null;
                }       
            }

//originTileX=0;
           //originTileY=0;
            var x2 = (Math.round(Math.abs((center.lon - originTileX) / (res * this.tileSize.w))));
            var y2 = (Math.round(Math.abs((center.lat-originTileY) / (res * this.tileSize.h))));
            // Write the values into our formatted url
            //url = OpenLayers.String.format(url, {'x': x, 'y': y, 'z': z});
      z=z+11;
      //url=Hzgis.CommonMap.PGISMap+"&Col="+x2+"&Row="+y2+"&Zoom="+z+"&V=0.3";
      //alert(url);
      var imgsrc = "http://10.118.128.33:7001/PGIS_S_TileMapServer/Maps/default/EzMap?Service=getImage&Type=RGB&Zoom=" + z + "&Row=" + y2 + "&Col=" + x2 + "&V=0.3"
      return imgsrc;
    }

function playtrace(tracepoint)
            {

var vectors, lineFeature;//存放线路
                //线路样式
                var style_green = {
                    strokeColor: "#0",
                    strokeWidth: 1,
                    strokeDashstyle: "dashdot",
                    pointRadius: 6,
                    pointerEvents: "visiblePainted"
                };

//画线图层设置
                var layer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
                layer_style.fillOpacity = 0.2;
                layer_style.graphicOpacity = 1;

//画线图层
                vectors = new OpenLayers.Layer.Vector("Simple Geometry", { style: layer_style });
                map.addLayer(vectors);

//一下采用数组型式填充轨迹
                var pointList = [];
               // var readerCoo = [];

//readerCoo.push({ "lon": 120.4637146, "lan": 29.9751599 });

// readerCoo.push({ "lon": 120.4637146, "lan": 30.4486737 });

// readerCoo.push({ "lon": 119.9143982, "lan": 30.4486737 });
               // readerCoo.push({ "lon": 119.9143982, "lan": 29.9751599 });
             //   readerCoo.push({ "lon": 120.4637146, "lan": 29.9751599 });

for (var i = 0; i < tracepoint.length; i++) {
                    if (parseInt(tracepoint[i].lo) < 10) continue;
       
                    var newPoint = new OpenLayers.Geometry.Point(parseFloat(tracepoint[i].lo) + 0.00469276, parseFloat(tracepoint[i].la) - 0.002422505);
                    newPoint.transform(map.displayProjection, map.getProjectionObject());
                    pointList.push(newPoint);
                }
                lineFeature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(pointList), null, style_green);
                vectors.addFeatures([lineFeature]);

}

function getlanguage() {
                var param = {
                    "PlayGHz": "1",
                    "UserID": "81",
                    "limit": "100",
                    "pageIndex": "1",
                    "BegTime": "2013-05-21",
                    "EndTime": "2013-05-22"
                };
                jquerygetNewData_ajax("http://10.8.52.241:8080/Handlers/GetGisHistoryByUserID.ashx", param, function (request) {
                    if (request != null) {
                        playtrace(request);
                    }

}, false, false);
            }

//自定义切片规则的切片路径获取
            function get_my_url(bounds) {

var res = this.map.getResolution();
                //var extent = new OpenLayers.Bounds(
                //                119.9143982, 29.9751599,
                //                120.4637146, 30.4486737
                //            );
                //extent.transform(proj, mapproj);  //投影转换

//var x1 = Math.round((extent.left - this.maxExtent.left) / (res * this.tileSize.w));
                //var y1 = Math.round((this.maxExtent.top - extent.top) / (res * this.tileSize.h));

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 = parseInt(this.map.getZoom());

if (x == 0 || y == 0) return;

//http://10.118.128.33:7001/PGIS_S_TileMapServer/Maps/default/EzMap?Service=getImage&Type=RGB&Col=1922&Row=485&Zoom=13&V=0.3

var imgsrc = "http://10.118.128.33:7001/PGIS_S_TileMapServer/Maps/default/EzMap?Service=getImage&Type=RGB&Zoom=" + z + "&Row=" + y + "&Col=" + x + "&V=0.3"
                //var imgsrc = this.url+ "/"+z+ "/"+ Math.floor(x/16) + "/"+ Math.floor((Math.pow(2,z) - 1 - y)/ 16) + "/"+x + "_" + (Math.pow(2, z) - 1 - y);

return imgsrc;

}

function GetParamValue(findParam, defaultValue) {
                var arr0 = document.location.href.split("?");
                if (arr0.length <= 1) return defaultValue;
                var arr;
                if (arr0[1].indexOf("&") == -1) {
                    arr = arr0[1].split("%26");
                }
                else {
                    arr = arr0[1].split("&");
                }
                for (var i = 0; i < arr.length; i++) {
                    if (arr[i].indexOf(findParam) == 0 && arr[i].indexOf("=") == findParam.length) {

arr = arr[i].split("=");
                        defaultValue = arr[1];
                        break;
                    }
                }

return defaultValue;
            }

</script> 
    </head> 
 
    <!-- body.onload is called once the page is loaded (call the 'init' function) --> 
    <body οnlοad="init();"> 
 
        <!-- define a DIV into which the map will appear. Make it take up the whole window --> 
        <div style="width: 100%; height: 100%" id="map" ></div> 
 
    </body>

</html>

openlayers 对接相关推荐

  1. iClient for OpenLayers之快速获取UGCV5,MVT出图参数

    作者:yangjl 前言   最近还是有很多小伙伴们,一遇到非wgs84坐标的ugcv5或mvt切图瓦片发布的地图服务,便不能对接出图了,或者是出了图但是看着地图边界比较模糊.今天我在这里讲干货,让小 ...

  2. SuperMap iClient for Openlayers 实现WFS查询功能

    SuperMap iClient for classic已经实现对接WFS服务,可以对WFS进行查询并展示出查询的结果,但是官网范例中,目前没有关于Openlayers客户端的示例,在此文章中将简单介 ...

  3. Web端MVT矢量瓦片加载之OpenLayers篇

    作者:LX 前言 MVT全称是Mapbox Vector Tile,是Mapbox标准的矢量切片.矢量瓦片具有创建效率高.传输和渲染速度快.数据和风格样式独立,更改配图方案无需重新创建瓦片.高显示质量 ...

  4. 如何更优雅地对接第三方API

    如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/ ...

  5. Linux中autoduck批量对接,科学网—用AutoDock进行分子对接教程——半柔性对接 - 杜文义的博文...

    以下所有内容均属于个人学习过程中的总结,如有错误,欢迎批评指正! Autodock分子对接教程 First release:2017-12-20  Last update: 2018-07-24 Au ...

  6. OpenLayers 动态添加标记(Marker)和信息窗(Popup)

    方式一:使用marker方式 1.在地图上添加标记图层 var markers =newOpenLayers.Layer.Markers("Markers"); map.addLa ...

  7. Nacos v0.7.0:对接CMDB,实现基于标签的服务发现能力

    Nacos近期发布了0.7.0版本,该版本支持对接第三方CMDB获取CMDB数据.使用Selector机制来配置服务的路由类型.支持单机模式使用MySQL数据库.上线Node.js客户端,并修复了一些 ...

  8. 读书笔记(2) OpenLayers中的图层

    OpenLayers有多个不同的图层类,每一个都可以连接到不同的地图服务器.例如通过Layer.WMS类可以连接到WMS地图服务器,通过Layer.Google类可以连接到谷歌地图服务器.OpenLa ...

  9. 一款直击痛点的优秀http框架,让我超高效率完成了和第三方接口的对接

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:元人部落 cnblogs.com/bryan31/p/133 ...

最新文章

  1. Apache2.4+Tomcat7集群搭建
  2. R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色、添加抖动数据点jitter、误差条)并在X轴标签下方添加分组对应的统计值(样本数N、中位数、四分位数的间距iqr)
  3. kubelet配置cni插件_从零开始入门 K8s | 理解 CNI 和 CNI 插件
  4. 一文尽览5G全产业链及新机遇
  5. 安装kafka过程及出现的问题解决
  6. 通讯录(容量不可变)
  7. 最真实的互联网用户画像...
  8. FCKeditor 在ASP.Net 中的使用说明
  9. php-Arrays函数-array_flip-交换数组的键值
  10. CMS:文章管理之视图(2)
  11. gis影像格式img转为ecw_微图影像地图导出拼接大图的参数说明
  12. Boost.Flyweight 序列化示例
  13. @RequestMapping和@GetMapping @PostMapping 区别
  14. java表数据去重_java8实现列表去重,java8的stream 和lambda的使用实例
  15. java陷阱常见面试题_Java常见陷阱
  16. python2.7 threading RLock/Condition文档翻译 (RLock/Condition详解)
  17. SP263 PERIOD - Period
  18. 制作windows7虚拟机镜像并配置网络
  19. 豆瓣电影Top250数据爬取、数据分析及数据可视化
  20. python不显示边框_python设置表格边框的具体方法

热门文章

  1. 如何将STEP7的块导出及后续
  2. 中国网建提供的SMS短信发送
  3. MyBatis中的#和$之间的区别
  4. python操作鼠标进行点击
  5. 使用Druid,C3P0连接池连接达梦主备集群
  6. 独立游戏开发者的一些PR经验
  7. db2 迁移 aix linux,DB2从windowsXP迁移至AIX完整过程
  8. WCF RIA Services 概述
  9. windows 异步IO操作的几种实现方法
  10. Capsule Networks 胶囊网络