写出我的摸索过程,不直接写结果
从生成的html页面代码,得到地图控件的页面结构
<td id="map" onmouseout="return ExitMap(event)">
<div>
<div id="mapSpace">
<div id="tilePlanes">
</div>
<div id="img1" style="overflow: hidden">
<img class="mapImage" id="mapImage1" style="visibility: hidden">
<img class="mapImage" id="mapImage2" style="visibility: hidden">
</div>
</div>
<div id="overlay" style="display: none; left: 0px; visibility: hidden; position: absolute;
top: 0px">
</div>
</div>
</td>
几个重要的变量:
mapCell = document.getElementById('map');
mapDevW = mapCell.offsetWidth;
mapDevH = safari? document.body.offsetHeight: mapCell.offsetHeight; //height of inner elements not set on safari
一个重要的函数
function ScreenToMapUnits(x, y) {
if(x > mapDevW - 1) x = mapDevW - 1;
else if(x < 0) x = 0;
if(y > mapDevH - 1) y = mapDevH - 1;
else if(y < 0) y = 0;
x = extX1 + (extX2 - extX1) * (x / mapDevW);
y = extY1 - (extY1 - extY2) * (y / mapDevH);
return new Point(x, y);
}
你可能会问,我列出这点代码有什么用?
地图控件是mos的核心部位,明白了它的结构,就相当于心中有了一张地图,可以让你迅速走出迷雾。
至于具体怎么用,就看你了。
一般的,需要研究源代码,并进行修改。
可以看出,有两个mapImage: mapImage1&mapImage2。
这两个img, 用来切换curimg(全局指示变量)。
curimg切换时,用到了safari, safari是什么?在mapFrame脚本里没有查出定义出来。
而mapFrame引用了browserdetect.js , contextmenu.js , wz_jsgraphics , hashtable.js , sarissa.js , digitize.js .
在browserdetect.js的代码:
var agent = navigator.userAgent.toLowerCase();
var msie = agent.indexOf("msie") != -1;
var safari = agent.indexOf("safari") != -1;
var firefox = agent.indexOf("firefox") != -1;
终于搞明白safari是一浏览嚣。
于是找了一下safari的资料,