面朝大海,春暖华开

focus on scientific computue, 3dgis, spatial database
专注于科学计算、GIS空间分析

 

mos开发系列教程八:页面代码研究-地图控件页面结构

写出我的摸索过程,不直接写结果
从生成的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的资料,

Safari

一,概述

 

afari是苹果电脑的最新操作系统Mac OS X中新的缺省网页浏览器,用来取代之前的Internet Explorer for Mac。Safari使用了KDE的KHTML作为浏览器的运算核心。

 

二,开发历程

 

在1997年以前,麦金塔电脑是预装Netscape Navigator浏览器的,及后微软以开发苹果版的Microsoft Office作为条件,要求苹果改用Internet Explorer for Mac。至2003年6月,苹果推出自家的Safari浏览器,微软也终止开发苹果版的IE浏览器。在Mac OS X 10.3版仍有保留IE,至10.4版苹果仅预装Safari浏览器。

 

Safari使用苹果自家的WebKit来进行网页排版及执行Java Script,当中WebKit内含WebCore排版引擎及JavaScriptCore引擎,分别从KDE的KHTML及KJS引擎衍生而来。WebCore及JavaScriptCore与KHTML及KJS一样,同是自由软件,并以LGPL方式授权。苹果对KHTML的一些改进会并入Konqueror计划。另外,苹果方面也推出了附加的源始码,以类似BSD执照般的开放源代码方式授权。

 

2005年6 月,KHTML的开发人员曾批评苹果不去整理产品改动的记录,苹果方面遂把WebCore及JavaScriptCore的开发及错误回报交予 opendarwin.org负责。WebKit本身也是以开放源始码方式发行,但浏览器自身的外观,如使用接口等,则维持专有。

 

2005年4月29日,Safari 2.0版推出,内置RSS及Atom阅读器,其他新功能计有隐密浏览、收藏及电邮网页、搜寻网址书签等,其速度是1.2.4版本的1.8倍。

 

2005年4月,Safari的开发人员之一Dave Htatt,就他为Safari进行除错的进展方面提交文件,使之能通过Acid2测试(是针对网页浏览器及设计软件,就支援HTML、CSS 2.0及PNG图像标准的综合测试)。4月27日,Hyatt宣布其内部试验版本的Safari通过了Acid2。至10月31日,Safari 2.0.2版正式推出,成为首个通过Acid2测试的浏览器。


posted on 2006-10-08 23:48  风过 无痕  阅读(440)  评论(0编辑  收藏  举报

导航

向日葵支付宝收钱码