关于openlayers

xushilin000000000 2010-05-26 05:20:05
今天刚接触到openlayers这个东西,感觉挺好的,

我从google的地图上抓了四张256*256的图片,放在自己的工程中,用OpenLayers.Layer.Image只能用一张图片作为地图,现在想把四张都用上弄成一张地图,该怎么弄呢??

望大侠们给个帮助。
...全文
346 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
josephSC 2012-02-10
  • 打赏
  • 举报
回复
不错,可惜来晚了
liuzidong1987 2011-08-25
  • 打赏
  • 举报
回复
谢谢naitboy的回答,我现在已经用您的代码实现了本地tiles显示!您说坐标映射有问题,其实没有问题,只是您的代码写错了而已,只需要将您的代码中if语句下的“{ else .......}”删除掉就没事了。
(把错误找出,让更多人不走弯路!)[Quote=引用 4 楼 naitboy 的回复:]
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml……
[/Quote]
naitboy 2010-06-25
  • 打赏
  • 举报
回复
可以直接用缓存里的图片,不过要改一下文件名本例:是gm_x_y_z.png
这个例子坐标映射可能还有点问题
naitboy 2010-06-25
  • 打赏
  • 举报
回复
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<link rel="stylesheet" href="res/default/style.css" type="text/css" />
<link rel="stylesheet" href="res/style.css" type="text/css" />

<script type="text/javascript" src="res/OpenLayers.js"></script>

<script type="text/javascript">

var MinX = 22;
var MinY = 10;
var MaxX = 28;
var MaxY = 14;

var lat,lon;

if (location.search == "")
{
//全国
// lon=120.363808;
// lat=36.088506;

lat=36.738403;
lon=119.161835;


zoom=6;
}
else
{
//http://ditu.google.cn/?ie=UTF8&ll=31.230344,121.472569&spn=0.015633,0.026436&z=15
//http://ditu.google.cn/maps?f=q&hl=zh-CN&geocode=&q=%E9%9D%92%E5%B2%9B&ie=UTF8&ll=36.088506,120.363808&spn=0.118745,0.211487&z=12&iwloc=addr
var PI = 3.14159265358979323846;
lon = lon * 20037508.34 / 180;
lat = Math.log (Math.tan ((90 + lat) * PI / 360)) / (PI / 180);
lat = lat * 20037508.34 / 180;
}
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)); //this 是指图层
// var y = Math.round ((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
// var z = 17 - this.map.getZoom();
//
// //----------------------------------
// //shanghai 109760 53556 qingdao 109344 51424 from coords.txt
// //naming rule://map/1x/000/1x000000.png
// var myBounds={left:109344,top:51424};//109344 51424
// var myDir0=Math.pow(2,z);
// x = Math.round (x - myBounds.left/myDir0 );
// var myTileNum="000";
// if(x>=0)
// {
// myTileNum=x.toString();
// if(myTileNum.length==1)myTileNum="00"+myTileNum;
// if(myTileNum.length==2)myTileNum="0"+myTileNum;
//
// }
// y =Math.round (y - myBounds.top/myDir0 );
// var myTileDir="000";
//
// if(y>=0)
// {
// myTileDir=y.toString();
// if(myTileDir.length==1)myTileDir="00"+myTileDir;
// if(myTileDir.length==2)myTileDir="0"+myTileDir;
//
// }
//
// var path = myDir0+"x/"
// + myTileDir + "/"
// + myDir0+"x" + myTileDir + myTileNum + "." + this.type;
// if(x<0 || y<0)path="blank.png";
// var url = this.url;
// if (url instanceof Array)
// {
// url = this.selectUrl(path, url);
// }
// //alert(url + path);
// return url + path;
var res = this.map.getResolution();
var bbox = this.map.getMaxExtent();
var size = this.tileSize;

var x = Math.round ((bounds.left - bbox.left) / (res * size.w));
var y = Math.round ((bbox.top - bounds.top) / (res * size.h));
var z = this.map.getZoom()+3;

var path ="gm_" + x + "_" + y + "_" + z + "." + this.type;
var url = this.url;
if (url instanceof Array) {
url = this.selectUrl(path, url);
}
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()
],
maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
//Resolution=20037508*2/256*2^(zoom+1),zoom取值0~15
// numZoomLevels:19,
// maxResolution:156543.0339,

numZoomLevels:16,
maxResolution:156543.0339/8,

units:'m',//,
//projection: "EPSG:41001"
projection: "EPSG:900913",
displayProjection: new OpenLayers.Projection("EPSG:4326")

}
);

myHome = new OpenLayers.Layer.TMS(
"测试",
"map/",
{type:'png', getURL: get_imap_url} );
map.addLayers([myHome]);
var lonLat = new OpenLayers.LonLat(lon,lat);
//map.setCenter (lonLat, 12);
//map.zoomToExtent(new OpenLayers.Bounds(119.194965, 36.746243, 119.130549, 36.729873 ));

map.setCenter (lonLat, zoom);

};
</script>

</head>
<body onload="init()">
<form id="form1" runat="server">
<h1 id="title">
Zoomify Layer Example</h1>
<div id="tags">
</div>
<p id="shortdesc">
Demo of a layer with Zoomify tiles.
</p>
<div id="map" class="smallmap">
</div>
</form>
</body>
</html>
fxsy6669 2010-05-27
  • 打赏
  • 举报
回复
啊哈哈……
fxsy6669 2010-05-26
  • 打赏
  • 举报
回复
sf!!!!!!!!!!!!

fxsy6669 2010-05-26
  • 打赏
  • 举报
回复
哈,不知道,来学习啦!

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧