想利用 OpenLayers 为基础 写一个 地图浏览器,看到OpenLayers支持很多的地图范围,但好像对于切片的没有明确支持,查了好久,发现可以重写TMS,目前碰到一个问题,不知道怎样才能支持像素坐标
<SCRIPT LANGUAGE="JavaScript">
var map;
function get_imap_url (bounds) {//我想根据这里的值,得到地图的像素坐标不知道,怎么转换?请高人指教
        var res = this.map.getResolution();
        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.numZoomLevels - this.map.getZoom();
        ……
        return url + path;
    }function init()
{
   map = new OpenLayers.Map ("map", {
    controls:[
     new OpenLayers.Control.Permalink(),
     new OpenLayers.Control.MouseDefaults(),
     new OpenLayers.Control.LayerSwitcher(),
     new OpenLayers.Control.MousePosition(),
     new OpenLayers.Control.PanZoomBar()], maxScale: 650, minScale: 10400, numZoomLevels: 5} );
myHome = new OpenLayers.Layer.TMS( 
   "My@home",
   "http://localhost:8080/map/",
   {type:'png', getURL: get_imap_url} );
        map.addLayers([myHome]);
}
</SCRIPT>
问题:
1.get_imap_url 中的参数 bounds 具体代表什么,在那里初始化了,初始化后的内容是什么?
2.this.map.getResolution() 什么意思?返回结果表示什么
3.在get_imap_url方法中 如何转换像素坐标???请高人指点,在线等待

解决方案 »

  1.   

    //OpenLayers 采用的是墨卡托坐标系,
    //所以 var lonlat = map.getLonLatFromPixel(e.xy);这里的转换是转换成了墨卡托坐标,
    //只需要调用这个方法就可以将墨卡托坐标转换成经纬坐标了:
    //transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
    //transform(source, dest);第一个参数:源坐标系;第二个参数:目标坐标系。这样就解决了坐
      

  2.   

    var position=map.getLonLatFromPixel(e.xy);
    position = position.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
      

  3.   

    var position=map.getLonLatFromPixel(e.xy);
    position = position.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));