﻿    var cenx = 39.990168;
    var ceny = 116.295304;
    var maphight = 0;
    var mapwidth = 0;
    var stzoom=6;
    var map;
    var gp = new GISPointList();
    
    function init(){
        //检查浏览器的兼容性.
        if (GBrowserIsCompatible()){
            map=new GMap2(document.getElementById("map_canvas"));
        	
	        //设置地图的中心坐标.
            var loc = new GLatLng(cenx,ceny);
            map.setCenter(loc,stzoom);
            map.addMapType(G_PHYSICAL_MAP);
            map.setMapType(G_PHYSICAL_MAP);//G_HYBRID_MAP
            
            //创建带有可在四个方向平移、放大、缩小的按钮，以及缩放滑块的控件。
	        map.addControl(new GLargeMapControl());        	
	        //创建带有切换地图类型的按钮的控件。
	        map.addControl(new GHierarchicalMapTypeControl());
	        
	        maphight = map.getSize().height;
	        mapwidth = map.getSize().width;
	        
	        GEvent.addListener(map,"moveend",MapPan);
	        GEvent.addListener(map,"zoomend",MapPan);
            map.enableContinuousZoom();
            //map.disableDoubleClickZoom();
            MapPan();
        }
    }
    //初始化地图
    window.onload=init;
    //卸载地图
    window.onunload=GUnload;    
    function MapPan()
    {
        if ( !movetime )  return;
        var bound = map.getBounds();
        if ( bound )
        {
            var llng = bound.getSouthWest().lng();
            var llat = bound.getNorthEast().lat();
            var rlng = bound.getNorthEast().lng(); 
            var rlat = bound.getSouthWest().lat(); 
            var lvl = map.getZoom();
            PageMethods.GetPicture( llng, llat, rlng, rlat,lvl,maphight, mapwidth, picreturn );
            //document.getElementById( "info" ).innerHTML = llng+"至"+rlng +" | " + llat + "至" + rlat +"<br />" ;
        }
    }
    var movetime = true;
    
    function setmovetime()
    {
        movetime = false;
        window.setTimeout( function(){ movetime = true },1000 );
    }
    
    var oldstr = "";
    
    function picreturn( data )
    {
//        document.getElementById( "info" ).innerHTML = data ;
//        return;
        if ( oldstr != data )oldstr  = data;
        else return;


        //map.clearOverlays();
        gp.Init();
        
        //分解
        var strlist = data.split( ";" );
        
        if ( strlist.length > 0 )
        {
            var piclist = "";
            for ( var i = 0; i < strlist.length; i++ )
            {
                if ( strlist[i] != "" )
                {
                    var tq = strlist[i].split("@");
                    if ( tq.length ==5 )
                    {
                        var lng = tq[0];
                        var lat = tq[1];
                        var u = tq[2];
                        piclist += tq[4];
                        
                        if ( !gp.isExistU( u ) )
                        {
                            var markicon = new GIcon(G_DEFAULT_ICON);
                            markicon.image = u;
                            //markicon.shadow = "../Icon/k.gif"; 
                            markicon.iconSize = new GSize(40,40);
                            //markicon.shadowSize= new GSize(40, 40);
                            
                            var newsmark = new GMarker(new GLatLng(lat,lng),{icon:markicon});
                            newsmark.newhtml = tq[3];
                            newsmark.u = u; 
                            GEvent.addListener(newsmark, "click", 
                                function() {setmovetime(); this.openInfoWindowHtml( this.newhtml,{maxWidth:250} ); }); 
                            //map.addOverlay( newsmark );
                            gp.PutPoint( newsmark );
                        }
                        else
                        {
                            mymark = gp.getMark( u );
                            if ( mymark )
                                mymark.setLatLng( new GLatLng( lat,lng ) );
                        }
                    }
                }   
            }
            
            var tmp = document.getElementById("pictureList")
            if ( tmp )
            {
                tmp.innerHTML = piclist;
            }
            
            gp.Clear();
        }
    }
    
    
    //GIS标记点类
    function GISPointList()
    {
        var pointList = new Array();
        this.PutPoint = function( obj )
        {
            if ( this.isExist( obj ) ) return;
            else
            {
                obj.ooook = true;
                pointList.push( obj );
                map.addOverlay( obj )
            }
        }
        
        this.getMark = function (obj)
        {
            for ( var tmp = 0; tmp < pointList.length; tmp++ )
            {
                if ( pointList[tmp].u == obj )
                {
                    return pointList[tmp];
                }
            }
            
            return null;
        }
        
        this.isExist = function( obj )
        {
            for ( var tmp = 0; tmp < pointList.length; tmp++ )
            {
                if ( pointList[tmp].u == obj.u )
                {
                    pointList[tmp].ooook = true;
                    return true;
                }
            }
            
            return false;
        }
        
        this.isExistU = function( obj )
        {
            for ( var tmp = 0; tmp < pointList.length; tmp++ )
            {
                if ( pointList[tmp].u == obj )
                {
                    pointList[tmp].ooook = true;
                    return true;
                }
            }
            
            return false;
        }
        
        this.Init = function()
        {
            for ( var tmp = 0; tmp < pointList.length; tmp++ )
            {
                if ( pointList[tmp] )
                {
                    pointList[tmp].ooook = false;
                }
            }
        }
        
        this.Clear = function()
        {            
            for ( var tmp = pointList.length - 1; tmp >= 0; tmp-- )
            {
                if ( pointList[tmp].ooook == false )
                {
                    map.removeOverlay( pointList[tmp] );
                    pointList.splice( tmp, 1 );           
                }
            }
        }
    }
