认清事物的本质-简单

博客园 首页 新随笔 联系 订阅 管理

今天研究了一个使用Google maps的例子,写一下学到的知识(还不到心得的程度)。

首先声明,我对JavaScript并不熟,所以例子浅显看到的人请别嘲笑我。我会慢慢的一个个例子的发,一点点的学习。

<script type="text/javascript">
//<![CDATA[
    //声明GMap对象
    var map;
    var eventinfo;
    var mapcenter;
    var zoomlevel;
    var maptype;
    
    //更新信息,el为指定HTML元素,info为里边显示的内容
    function updateInfo(el, info)
    {
      el.innerHTML = info;
    }
    
    //添加拖动事件监听器
    function addDragListener()
    {
       //监听地图上的事件
       GEvent.addDomListener(map, 'dragstart', function()
                    {
                        updateInfo(eventinfo, "当前事件:dragstart");
                    });
       GEvent.addDomListener(map, 'drag', function()
                    {
                        updateInfo(eventinfo, "当前事件:drag");
                        updateInfo(mapcenter, "当前地图中心纬度:" + map.getCenter().lat() + " 经度" + map.getCenter().lng());
                    });
       GEvent.addDomListener(map, 'dragend', function()
                    {
                        updateInfo(eventinfo, "当前事件:dragend");
                    });
    }
    
    //添加缩放事件监听器
    function addZoomListener()
    {
       //监听地图上的缩放事件
       GEvent.addDomListener(map, 'zoomstart', function()
                    {
                        updateInfo(eventinfo, "当前事件:zoomstart");
                    });
       GEvent.addDomListener(map, 'zoomend', function()
                    {
                        updateInfo(eventinfo, "当前事件:zoomend");
                        updateInfo(zoomlevel, "当前地图缩放级别:" + map.getZoom());
                    });
    }
    
    //添加maptypechanged事件监听器
    function addMapTypeListener()
    {
       //监听地图上maptypechanged事件
       GEvent.addDomListener(map, 'maptypechanged', function()
                    {
                        updateInfo(eventinfo, "当前事件:maptypechanged");
                        updateInfo(maptype, "当前地图类型:" + map.getCurrentMapType().getName(false));
                    });
    }

    function load()
    {
      if (GBrowserIsCompatible())
      {
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(39.92, 116.46), 4);
        
        map.addControl( new GMapTypeControl() );
        map.addControl( new GLargeMapControl() );
        
        eventinfo = document.getElementById("eventinfo");
        mapcenter = document.getElementById("mapcenter");
        zoomlevel = document.getElementById("zoomlevel");
        maptype = document.getElementById("maptype");
        
        addDragListener();
        addZoomListener();
        addMapTypeListener();
        
      }
    }    
//]]>
    </script>
  </head>
  <!--加载时调用load()函数加载地图,注意加上onunload="GUnload()"防止内存泄露-->
  <body onload="load()" onunload="GUnload()">
    <!--以下id为map的DIV元素即为Google地图的容器-->
    <div id="map" style="width: 500px; height: 400px;"></div>
    <div id="eventinfo"></div>
    <div id="mapcenter"></div>
    <div id="zoomlevel"></div>
    <div id="maptype"></div>
  </body>
这个例子的运作流程:首先文档被加载到浏览器,加载时触发load()事件,在该事件里面会将通过三个添加监听器的函数为map对象添加三种类型的监听器:地图拖动、地图放大和缩小、地图类型改变,每种类型事件发生时都会有相应的函数进行处理。
通过这个例子就可以对事件处理的流程有了大体的了解了。
posted on 2009-08-20 14:29  萧冲  阅读(451)  评论(0)    收藏  举报