﻿var AjaxMap = null;
var pNavigator = null;
var pTrackingBox = null;
var pTrackingLine = null;
var pMeasure = null;
var pZoomIn  = null;
var pZoomOut = null;
var pPointIdentify = null;
var DefaultZoomSacle = 4000;
var viewMapLayers = "";    //请求显示的地图图层
var isShowMapLayer = true; //是否显示地图
var dateFilter = "";       //主图层数据的时间过滤条件 当有年代字段的时候


function mapInit() 
{//初始化地图    
	AjaxMap = new MapObject( 'viewport' );  
	configBaseMap();
	AjaxMap.addMap( map );	
    pNavigator 		= new NavigatorTool(AjaxMap);    
    //地图控制面板
    AjaxMap.addMapControl();
    //初始化地图
    AjaxMap.selectMap('地图'); 
    setMapTool('pan');
}


function reflashMap()
{
   getMap(-1,AjaxMap.getGeoExtents());
}
var backscale = 0;
function getMap(eventid,bound)
{//获取当前地图范围内的动态地图
    
    var scale = AjaxMap.getCurrentScale();
    if(backscale != scale)
    {
        //alert("change scale");
    }
    backscale = scale;
    var obj1 = getVisibleMap();    
    var obj2 = getHiddenMap();    
    if(viewMapLayers != "" && isShowMapLayer)
    {//图层        
	    var bbox = bound.minX+","+bound.minY + "," + bound.maxX + "," + bound.maxY;
	    var height = AjaxMap.viewportHeight;
	    var width = AjaxMap.viewportWidth;
	    var URL = "/MapServer/wms.ashx?REQUEST=GetMap&Layers="+ viewMapLayers +"&STYLES=&CRS=EPSG:4326&BBOX="+bbox+"&WIDTH="+width+"&HEIGHT="+height+"&FORMAT=image/png&VERSION=1.3.0&TRANSPARENT=true&" + dateFilter;
	    //window.open(URL);
	    AjaxMap.eventCavns.style.width = AjaxMap.viewportWidth + "px";
	    AjaxMap.eventCavns.style.height = AjaxMap.viewportHeight + "px";	
	    obj1.style.width = AjaxMap.viewportWidth + "px";
	    obj1.style.height = AjaxMap.viewportHeight + "px";
	    obj2.style.height = AjaxMap.viewportHeight + "px";
	    obj2.style.width = AjaxMap.viewportWidth + "px";
    	
	    obj1.style.left = (- safeParseInt(AjaxMap.mapContainer.style.left)) + "px";
	    obj1.style.top = (- safeParseInt(AjaxMap.mapContainer.style.top)) + "px";
	    //loading... 
    	AjaxMap.ajaxLoading.style.visibility = 'visible';
    	AjaxMap.dynamicLayer.style.visibility = 'visible';
        obj1.style.visibility = 'hidden';
	    obj1.onload = switchMapImage;
	    obj1.src = URL;	
	}
	else
	{
	    obj1.src = AjaxMap.aPixel.src;
	    obj2.src = AjaxMap.aPixel.src;
	    //png透明 需要清空滤镜
	    if(obj1.runtimeStyle)
	    {
	        obj1.runtimeStyle.filter ="";
	        obj2.runtimeStyle.filter ="";	
	    }    
	    AjaxMap.ajaxLoading.style.visibility = 'hidden';
	    AjaxMap.dynamicLayer.style.visibility = 'hidden';
	}
}
function switchMapImage()
{//平滑地交换显示的图片
	this.style.visibility = 'visible';
	if ((version >= 5.5) && (version < 7) && (document.body.filters)) 
	{
		var t="images/transparent.gif";
		if( this.src != t ) 
		{
			var s=this.src;
			this.onload=null;
			this.src = t;
			if(this.runtimeStyle)
	        {			
			    this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+s+"',sizingMethod='scale')";
			}
		}
	}
	beginFade();	
	AjaxMap.ajaxLoading.style.visibility = 'hidden';
}
var currentMapIndex = 1;
var fadeSpeed = 10;
function getHiddenMap()
{//获取隐藏的地图
    if(currentMapIndex == 1)
    {
        return AjaxMap.dynamicMapImage1;
    }
    else
    {
        return AjaxMap.dynamicMapImage2;
    }
}
function getVisibleMap()
{//获取当前显示的地图
    if(currentMapIndex == 2)
    {
        return AjaxMap.dynamicMapImage1;
    }
    else
    {
        return AjaxMap.dynamicMapImage2;
    }
}
function beginFade()
{//切换显示图片
	var to=getHiddenMap();
	var from=getVisibleMap();
	to.style.zIndex = 10;
	from.style.zIndex = 9;
	to.style.width = '';
	to.style.height = '';
	to.style.left = '';
	to.style.top = '';
	from.onload = ''; //Clear the onload event
	setOpacity(to,0);
	to.style.visibility='visible';
	if(currentMapIndex==2) { currentMapIndex=1; } else { currentMapIndex=2; }
	//fade(20,20,from,to,obj);
}
function fade(value,step,from,to,obj)
{//渐渐切换显示图片
	setOpacity(to,value);
	if(value < 100) { 
		var delegate = function() { fade((value+step),step,from,to,obj); };
		setTimeout(delegate,obj.fadeSpeed);
	}
	else {
		from.style.visibility='hidden';		
	}
}
function setOpacity(obj,value)
{//设置透明度
	obj.style.opacity = value/100.0;
	obj.style.mozopacity = value/100.0;
	obj.style.filter = 'ALPHA(opacity=' + value + ')';	
}

function zoomTo(x,y)
{//缩放到某位置
    var s = AjaxMap.getCurrentScale();
    s = s > DefaultZoomSacle?DefaultZoomSacle:s;
    AjaxMap.zoomTo(parseFloat(x),parseFloat(y),s,false);
}

function zoomToIndexPage(x,y)
{//缩放到某位置
    var s = AjaxMap.getCurrentScale();
    s = s > DefaultZoomSacle?DefaultZoomSacle:s;
    AjaxMap.zoomTo(parseFloat(x),parseFloat(y),100000000,false);
}
function zoomToExtent(minx,miny,maxx,maxy)
{
    AjaxMap.zoomToExtents(minx,miny,maxx,maxy);
}
function zoomToCountry(x,y)
{
    AjaxMap.zoomTo(parseFloat(x),parseFloat(y),25000000,false);
}
function calMapView()
{//调整地图窗口大小
	var NS = getWindowSize(); 
	var mapview = $("viewport")
	var height = NS.height - TOPHEIGHT;
	var width = NS.width-8;
	if(width < 600) width=600;
	if(height < 400)height=400;
	var mapwidth = width - RESULTWIDTH;
	mapview.style.width   = mapwidth +'px';	
	mapview.style.height  = height + "px";
	var myframe = $("queryframe");
	myframe.style.width = RESULTWIDTH + "px";
	myframe.style.height = height + "px";
	//alert("event:"+mapview.style.width)
}
function resizeMap()
{//调整地图窗口大小 并初始化地图
	calMapView();
	AjaxMap.resize();
}

function adjuestControl()
{//调整地图中的控件位置
	if(AjaxMap.copyrightPane)
	{
		var width = safeParseInt(AjaxMap.copyrightPane.style.width);
		AjaxMap.copyrightPane.style.left  = AjaxMap.viewportWidth - width - 8+ "px";
		AjaxMap.copyrightPane.style.top = AjaxMap.viewportHeight - AjaxMap.copyrightPane.height + "px";
	}
	var left = AjaxMap.viewportWidth - 85;
	for(var i=AjaxMap.aMapnames.length-1;i>=0;i--)
	{
		var mptypediv = AjaxMap.aMaps[AjaxMap.aMapnames[i]].div;
		mptypediv.style.left  = left + "px";
		left = left - 65 - 20;
	}
}

function releaseTracking()
{
	if(AUTOQUERY)queryMetadata();
	//setMapTool('pan');
	//setcurrent();
}
function clearQueryElement()
{
	//删除行政区图形
	//删除定义的多边形
	removeBoundingBox();
	//清除动态线
	pTrackingLine.clear();
	//清楚动态多边形
	pTrackingPolygon.clear();
	
}

function setMapTool(tool)
{//设置当前地图操作工具
	if(tool == "pan")
	{
		pNavigator.activate();
	}
	if(tool == "trackBox")
	{
		pTrackingBox.activate();
		clearQueryElement();
	}
	if(tool == "trackLine")
	{		
		pTrackingLine.activate();
		clearQueryElement();
	}
	if(tool == "trackPolygon")
	{
		pTrackingPolygon.activate();
		clearQueryElement();
	}	
	if(tool == "measure")
	{
		pMeasure.activate();
	}
	if(tool == "clear")
	{
		//清楚测距信息
		pMeasure.clear();
		clearQueryElement();
		//清理其他地物
		AjaxMap.clearOverlays();
	}
	if(tool == "zoomin")
	{
		pZoomIn.activate();
	}
	if(tool == "zoomout")
	{
		pZoomOut.activate();
	}
	if(tool == "fullextent")
	{
	    AjaxMap.fullExtent();
	}
	if(tool == "reflash")
	{
		AjaxMap.reflash();
	}
	if(tool == "label")
	{
		pPointIdentify.cursor = "crosshair";
		pPointIdentify.callbackfun = addMapLabel;
		pPointIdentify.activate();
	}
	if(tool == "buffer")
	{
		pPointIdentify.cursor = "crosshair";
		pPointIdentify.callbackfun = doBuffer;
		pPointIdentify.activate();
		CurrentPOIPopWin.refobject = null;
	}
	if(tool == "info")
	{
		pPointIdentify.cursor = "help";
		pPointIdentify.callbackfun = queryInfo;
		pPointIdentify.activate();
	}
	if(tool == "print")
	{
	    window.open("print.htm");
	}
	if(tool == "prev")
	{
	    bIsSaveView =false;
	    var img = $("imgprev");
	    viewIndex --;
	    if(viewIndex <= 0) 
	    {
	        viewIndex = 0;
	        img.src="Images/maptools/prev_gray.gif"
	        return;
	    }
	    else
	    {
	        img.src="Images/maptools/prev.gif"
	    }
	    img = $("imgnext");
	    if(viewIndex >= viewextents.length)
	    {
	        img.src="Images/maptools/next_gray.gif"
	    }
	    else
	    {
	        img.src="Images/maptools/next.gif"
	    }
	    var bnd = viewextents[viewIndex];
	    if(bnd != null)
	    {
	        AjaxMap.zoomToExtents(bnd.minX,bnd.minY,bnd.maxX,bnd.maxY);
	    }
	}
	if(tool == "next")
	{
	    bIsSaveView = false;
	    //alert(viewextents.length + "@" + viewIndex);
	    var img = $("imgnext");	  
	    viewIndex ++;  
	    if(viewIndex >= viewextents.length)
	    {
	        viewIndex = viewextents.length;	        
	        img.src="Images/maptools/next_gray.gif"
	        return;
	    }
	    else
	    {
	        img.src="Images/maptools/next.gif"
	    }
	    var img = $("imgprev");
	    if(viewIndex <= 0) 
	    {
	        img.src="Images/maptools/prev_gray.gif"
	        return;
	    }
	    else
	    {
	        img.src="Images/maptools/prev.gif"
	    }
	    var bnd = viewextents[viewIndex];
	    if(bnd != null)
	    {
	        AjaxMap.zoomToExtents(bnd.minX,bnd.minY,bnd.maxX,bnd.maxY);
	    }
	    
	}
}
var bIsSaveView = true;
function ctlMapLayers()
{
    window.showModalDialog("layers.htm",window,"dialogWidth:200px;dialogHeight:260px;status:no;help:no");
}
var pinLabel = document.createElement("div");
pinLabel.innerHTML='<div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'Marker/AddLabel.png\',sizingMethod=scale);width:20px;height:35px;"><img src="images/pix.gif" width="20" height="35" style="position:absolute"/></div>';
pinLabel.xOffset = 0;
pinLabel.yOffset = -35;
pinLabel.style.zIndex = 9999;
pinLabel.title = "标注位置";
pinLabel.add =false;
function addMapLabel()
{//添加标注
	if(pinLabel != null && pinLabel.add)
	{
		AjaxMap.removeObject(pinLabel);
		pinLabel.add = false;
	}
	pinLabel.x = this.x;
	pinLabel.y = this.y;
	AjaxMap.addObjectGeo(this.x,this.y,pinLabel);
	pinLabel.add = true;
	//移动到中心
	AjaxMap.zoomTo(this.x,this.y,AjaxMap.getCurrentScale(),false,-210);	
	//focus flash
	addFocusFlash(this.x,this.y);
	if(CurrentPOIPopWin.add)
    {
        AjaxMap.removeObject(CurrentPOIPopWin);
        CurrentPOIPopWin.add =false;
    }
    AjaxMap.addObjectGeo(this.x,this.y,CurrentPOIPopWin);
    var content = PopWinInfo.SubmitPOI.replace("{@title}","添加标注");
    var url = "submitlabel.htm";
    content = content.replace("{@url}",url)
    CurrentPOIPopWin.innerHTML = content;
    CurrentPOIPopWin.add = true;
}
function closeLabelPopWin()
{//关闭信息框
   if(CurrentPOIPopWin.add)
   {
        AjaxMap.removeObject(CurrentPOIPopWin);
        CurrentPOIPopWin.add =false;
   }   
   if(pinLabel != null && pinLabel.add)
   {
	   AjaxMap.removeObject(pinLabel);
	   pinLabel.add = false;
   }
   removeFocusFlash();
}

var bufferDistance = 500;
var bufferqType = "";
var bufferX=0;
var bufferY=0;
var bufferOval = new Oval(new Point(0,0),0,0,"blue","red",1,0.2,"周边查询");
bufferOval.add = false;
function doBuffer()
{//周边查询
	//querybuffer(this.x,this.y,bufferqType,bufferDistance)
	bufferX = this.x;
	bufferY = this.y
	viewbuffer();
	ShowClassifyDlg();
}
function viewbuffer(v)
{//预览缓冲区
    if(bufferOval.add)
	{
		AjaxMap.removeOverlay(bufferOval);
	}
	if(v)
	{
	    bufferDistance = parseFloat(v);
	}
	var d = bufferDistance * 2 * inchesPerUnit[Unit.METER] / inchesPerUnit[Unit.DEGREE];
	bufferOval.point = new Point(parseFloat(bufferX),parseFloat(bufferY));
	bufferOval.width = d;
	bufferOval.height = d;
	bufferOval.setTitle("周边查询：" + bufferDistance + "米")
	AjaxMap.addVectorObject(bufferOval);
	bufferOval.add = true;
}
function removeBuffer()
{
    if(bufferOval.add)
	{	    
		AjaxMap.removeOverlay(bufferOval);
	}
	if(ovalCenter!=null)
	{
	    AjaxMap.removeOverlay(ovalCenter);
	}
}
var ovalCenter = null;
function querybuffer(x,y,type,dis)
{//周边查询 参数[查询类型,距离]
	//alert(x+"@"+y+"@"+type+"@"+dis);
	bufferqType = type;
	bufferDistance = dis;
	if(bufferOval.add)
	{
		AjaxMap.removeOverlay(bufferOval);
	}
	var d = bufferDistance * 2 * inchesPerUnit[Unit.METER] / inchesPerUnit[Unit.DEGREE];
	bufferOval.point = new Point(parseFloat(x),parseFloat(y));
	bufferOval.width = d;
	bufferOval.height = d;
	bufferOval.setTitle("周边查询：" + bufferDistance + "米")
	AjaxMap.addVectorObject(bufferOval);
	bufferOval.add = true;
	if(ovalCenter!=null)
	{
	    AjaxMap.removeOverlay(ovalCenter);
	}
	ovalCenter = new Marker(new Point(x,y),"中心位置");
	ovalCenter.setZIndex(99999);
    ovalCenter.image.x = x;
    ovalCenter.image.y = y;
    ovalCenter.image.type=type;
	if(CurrentPOIPopWin.refobject)
	{
	    var o = CurrentPOIPopWin.refobject;	    
	    ovalCenter.image.poiid = o.poiid;
	    ovalCenter.image.title = o.title;
	    if(o.id.indexOf('p')!= -1)
	    {//poi
	        ovalCenter.image.onclick = viewPOI;
	    }
	    else
	    {//tour
	        ovalCenter.image.onclick = siteTourClick;
	    }
	}
	else
	{//不可弹出信息 仅表示圆中心
	    ovalCenter.image.onclick = "";
	}
	AjaxMap.addOverlay(ovalCenter);
	var url = "bufferquery.aspx?action=buffer&x="+bufferOval.point.x+"&y="+bufferOval.point.y+"&bufferdis="+(d/2)+"&t=" + bufferqType;
//	window.open(url);

	if (isIE())
	{
		frame=frames["queryframe"];
	}
	else
	{
		frame=document.getElementById("queryframe").contentWindow;
	}
	if(frame) frame.ajaxloading();
	call(url,this,outputBufferResult);		
}
var frame;
function outputBufferResult(result)
{
    clearMarkers();
	frame.writeresult(result);
}
function goPagebuffer(page)
{
	var d = bufferDistance * 2 * inchesPerUnit[Unit.METER] / inchesPerUnit[Unit.DEGREE];
	var url = "bufferquery.aspx?action=buffer&x="+bufferOval.point.x+"&y="+bufferOval.point.y+"&bufferdis="+(d/2)+"&qtype=" + bufferqType + "&page=" + page;
	if(frame) frame.ajaxloading();
	call(url,this,outputBufferResult);
}
function queryInfo()
{//发布信息
    if(viewMapLayers != "")
    {
        var d = 10 * AjaxMap.cellSize;
        var url = "AjaxQuery.aspx?tp="+viewMapLayers+"&x="+this.x+"&y=" + this.y + "&d=" + d;
	   call(url,this,runscript);
	}
}
function runscript(script)
{
    eval(script);
}
var mapgrid     = null;
//##################
// 空间范围定义
//##################
//根据两点坐标创建矩形对象 封闭的5点构成
function createPolygon(minx,miny,maxx,maxy,color,bgcolor)
{    
	var pts = [];
	pts.push(new Point(minx,miny));
	pts.push(new Point(minx,maxy));
	pts.push(new Point(maxx,maxy));
	pts.push(new Point(maxx,miny));
	//pts.push(new Point(minx,miny));
	return new Polygon(pts,color,bgcolor);
}
var trackingBox = null;
//定义外包范围并执行查询
function defBoundingbox(eventID,bounds,points)
{	
 	if(trackingBox)
 	{
 		AjaxMap.removeOverlay(trackingBox);
 	}
 	trackingBox = new Polygon(points);//createPolygon(bounds.minX,bounds.minY,bounds.maxX,bounds.maxY);
 	if(trackingBox)
 	{
 		AjaxMap.addVectorObject(trackingBox);
 		trackingBox.setZIndex(999);
 	} 
 	if(AUTOQUERY)queryMetadata();
}
//在地图中定义一个矩形范围 不执行查询操作
function definePolygon(minx,miny,maxx,maxy)
{
    //alert(minx + "#" + miny +"#" +maxx+ "#" + maxy);
	if(trackingBox!=null)
	{
		AjaxMap.removeOverlay(trackingBox);
	}
	trackingBox = createPolygon(minx,miny,maxx,maxy);;
	AjaxMap.addVectorObject(trackingBox);
}
//清理地图中的外包范围对象
function removeBoundingBox()
{
	if(trackingBox)
 	{
 		AjaxMap.removeOverlay(trackingBox);
 	}
 	trackingBox = null;
}
 
var datatypeid = -1;
var boxpoints = "";
var shapetype = "";
function haveQueryElement()
{//判断是否定义了查询的图形
	if(trackingBox != null)
	{
		return true;
	}
	if(pTrackingPolygon.polygon && pTrackingPolygon.polygon.points.length > 0)
	{			
		return true;
	}
	if(pTrackingLine.polyline && pTrackingLine.polyline.points.length > 0)
	{			
		return true
	}
	return false;
}
function getMapShape()
{
    var points = "";
	if(trackingBox != null)
	{
		points = trackingBox.toLineString();
		shapetype = "polygon";
	}
	else
	{
		if(pTrackingPolygon.polygon && pTrackingPolygon.polygon.points.length > 0)
		{			
			points = pTrackingPolygon.polygon.toLineString();
			shapetype = "polygon";
		}
		else if(pTrackingLine.polyline && pTrackingLine.polyline.points.length > 0)
		{			
			points = pTrackingLine.polyline.toLineString();
			shapetype = "polyline";
			if(pTrackingLine.polyline.points.length < 2)
			{//必须两点以上坐标
				alert('请先定义查询图形，至少两个点才能够定义线！');
				pTrackingLine.clear();
				return false;
			}
			else if(pTrackingLine.polyline.points.length == 2)
			{//两点坐标的时候 spatial查询有问题 因此附加到三点坐标
				points +="," +pTrackingLine.polyline.points[0].toLineString();
			}	
		}
	}
	if(points != "")
	{
	    return "&shape="+shapetype+"&box="+points;
	}
	else
	{
	    return "";
	}
}

var focusmarker = null;
var focuspolygon = null;
var focuspolyline = null;
var focusIcon = new Icon("red");

function locatepos(x,y,name)
{//点的定位
	clearFocusElement();
	var targetpix = new Point(x,y);
	focusmarker = new Marker(targetpix,name,focusIcon)
	AjaxMap.addOverlay(focusmarker);
	AjaxMap.zoomTo(x,y);
	focusmarker.flash();
	focusmarker.setZIndex(1003);
}

function locatePolygon(ptlist)
{//多边形定位
	clearFocusElement();
	var points = [];
	for(var i=0;i<ptlist.length;i++)
	{
		var pt = new Point();
		pt.x = ptlist[i];
		i++;
		pt.y = ptlist[i];
		points.push(pt);
	}
	focuspolygon = new Polygon(points,"red","red")
	AjaxMap.addOverlay(focuspolygon);
	var bounds = focuspolygon.calculateBounds();
	AjaxMap.zoomToExtents(bounds.minX,bounds.minY,bounds.maxX,bounds.maxY);
	focuspolygon.flash();
	focuspolygon.setZIndex(1000);
}
function locateRectange(ptlist)
{//定位矩形
	clearFocusElement();
	var pts = [];
	var minx = ptlist[0];
	var miny = ptlist[1];
	var maxx = ptlist[2];
	var maxy = ptlist[3];
	pts.push(new Point(minx,miny));
	pts.push(new Point(minx,maxy));
	pts.push(new Point(maxx,maxy));
	pts.push(new Point(maxx,miny));
	pts.push(new Point(minx,miny));
	focuspolygon = new Polygon(pts,"red","red")
	AjaxMap.addOverlay(focuspolygon);
	var bounds = new Bounds(minx,miny,maxx,maxy);	
	var targetpix  = bounds.getCenter();				
	zoomTo(targetpix.x,targetpix.y);
	focuspolygon.flash();
	focuspolygon.setZIndex(1000);
}

function locatePolyline(ptlist)
{//线定位
	clearFocusElement();
	var points = [];
	for(var i=0;i<ptlist.length;i++)
	{
		var pt = new Point();
		pt.x = ptlist[i];
		i++;
		pt.y = ptlist[i];
		points.push(pt);
	}
	focuspolyline = new Polyline(points,"red")
	AjaxMap.addOverlay(focuspolyline);
	var bounds = focuspolyline.calculateBounds();	
	AjaxMap.zoomToExtent(bounds.minX,bounds.minY,bounds.maxX,bounds.maxY);
	focuspolyline.flash();
	focuspolyline.setZIndex(1001);
}

function clearFocusElement()
{//清理地图中的辅助定位元素 点、线、面	
	if(focusmarker != null)
	{
		AjaxMap.removeOverlay(focusmarker);
	}
	if(focuspolygon != null)
	{
		AjaxMap.removeOverlay(focuspolygon);
	}
	if(focuspolyline != null)
	{
		AjaxMap.removeOverlay(focuspolyline);
	}
}

function checkMap(x,y,pid,tp,title)
{
    setMapTool('clear');
    var obj  = new Marker(new Point(x,y),title);
    obj.setZIndex(99999);
    obj.image.x = x;
    obj.image.y = y;      
    obj.image.poiid = pid;
    obj.image.type = tp;
    obj.image.title = title;
    obj.image.onclick = viewPOI;
    AjaxMap.addOverlay(obj);    
    zoomTo(x,y);
    obj.image.click();
}
function addInfoPoint(x,y,pid,tp,title,url)
{
    var obj  = new Marker(new Point(x,y),title);
    obj.setZIndex(99999);
    obj.image.x = x;
    obj.image.y = y;      
    obj.image.poiid = pid;
    obj.image.type = tp;
    obj.image.title = title;
    obj.image.url = url;
    obj.image.onclick = function(){window.open(this.url)};
    AjaxMap.addOverlay(obj);    
    zoomTo(x,y);
}
//地图元素
//元数据图形的预览
function previewInMap(o)
{
	if(o.viewinmap)o.viewinmap = eval(o.viewinmap);
	if(!o.viewinmap)
	{
		var obj  = new Marker(new Point(o.x,o.y),o.title);
	    obj.setZIndex(99999);
        obj.image.x = o.x;
        obj.image.y = o.y;    
        obj.image.type = o.tp;  
	    obj.image.poiid = o.poiid;
	    obj.image.title = o.title;

	    obj.image.onclick = viewPOI;
	    AjaxMap.addOverlay(obj);
		o.overlay = obj;
		o.viewinmap = true;
	}
	else
	{
		var overlay = o.overlay;
		if(overlay)
		{
			AjaxMap.removeOverlay(overlay);
		}
		o.viewinmap = false;
	}	
}
//地图元素
var mapElement = new Array();
function addMapElement(coord,name)
{//增加地图元素	
	if( coord && coord.indexOf('|') != -1)
	{
		var str 	= coord.split('|');
		var type	= str[0];
		var ptlist 	= str[1];
		var pts 	= ptlist.split(',');
		if(type == "Point")
		{
			return addPointElement(pts[0],pts[1],name)
		}
		else if(type == "Rectange")
		{
			return addRectangeElement(pts);
		}
		else if(type == "Polyline")
		{
			return addPolylineElement(pts);
		}
		else if(type == "Polygon")
		{
			return addPolygonElement(pts);
		}
	}
	return null;
}
function addPointElement(x,y,name)
{//增加点元素
	var pt = new Point(x,y);
	var marker = new Marker(pt,name)
	AjaxMap.addOverlay(marker);
	marker.setZIndex(1000);
	mapElement.push(marker);
	return marker;
}
function addPolygonElement(ptlist)
{//增加多边形元素
	var points = [];
	for(var i=0;i<ptlist.length;i++)
	{
		var pt = new Point();
		pt.x = ptlist[i];
		i++;
		pt.y = ptlist[i];
		points.push(pt);
	}
	var polygon = new Polygon(points,"green","green")
	AjaxMap.addOverlay(polygon);
	mapElement.push(polygon);
	return polygon;
}
function addRectangeElement(ptlist)
{//增加矩形元素
	var rect = createPolygon(ptlist[0],ptlist[1],ptlist[2],ptlist[3],"green","green");
	AjaxMap.addOverlay(rect);	
	mapElement.push(rect);
	return rect;
}
function addPolylineElement(ptlist)
{//增加线元素
	var points = [];
	for(var i=0;i<ptlist.length;i++)
	{
		var pt = new Point();
		pt.x = ptlist[i];
		i++;
		pt.y = ptlist[i];
		points.push(pt);
	}
	var line = new Polyline(points,"green")
	AjaxMap.addOverlay(line);	
	mapElement.push(line);
	return line;
}
function removeMapElement(target)
{//删除地图元素
	if(target)
	{
		for(var i = 0;i<mapElement.length;i++)
		{
			var source = mapElement[i];
			if(source == target)
			{
				AjaxMap.removeOverlay(source);
				mapElement.splice(i,1);
			}
		}
	}
	else
	{
		for(var i = 0;i<mapElement.length;i++)
		{
			AjaxMap.removeOverlay(mapElement[i]);
		}
		mapElement = new Array();
	}
}

var currenttool = null;
function setcurrent(o)
{//工具条切换
	
	if(currenttool == null)
	{
		currenttool = $("defaulttool");		
	}
	else
	{
	    currenttool.className="maptool";
	}
	if(o)
	{
		currenttool = o;
	}
	else
	{
		currenttool = $("defaulttool");
	}	
	currenttool.className = "maptoolfocus";
	
}
function centerPage(url,w, h) 
{//打开弹出窗口页
　  var NS = getWindowSize(); 	
	var t = (NS.height - h)/2;
	var l = (NS.width - w)/2;
	popupPage(url,l,t,w,h,"")
} 
function popupPage(url,l, t, w, h,target) 
{//打开弹出窗口页
　　var windowprops = "location=no,scrollbars=yes,menubars=no,toolbars=no,resizable=yes" + ",left=" + l + ",top=" + t + ",width=" + w + ",height=" + h; 
    if(target)
    {
        popup = window.open(url,target,windowprops); 
    }
    else
    {
        popup = window.open(url,"input",windowprops); 
    }
	//window.open(url);
} 
//定位对象 一个闪动的flash
var CurrentFocusFlash = null;
CurrentFocusFlash = document.createElement("div");
CurrentFocusFlash.innerHTML =  '<div><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="28" height="28"><param name="movie" value="Images/Flash/lct.swf"><param name="quality" value="high"><PARAM NAME="wmode" VALUE="transparent"><embed src="Images/Flash/lct.swf" quality="high" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="28" height="28"></embed>  </object></div>';
CurrentFocusFlash.xOffset = -14;
CurrentFocusFlash.yOffset = -14;     
CurrentFocusFlash.add = false;
CurrentFocusFlash.style.zIndex=10000
function addFocusFlash(x,y)
{//flash闪动定位
    if(CurrentFocusFlash.add)
    {
        AjaxMap.removeObject(CurrentFocusFlash);
        CurrentFocusFlash.add = false;
    }
    AjaxMap.addObjectGeo(x,y,CurrentFocusFlash);    
    CurrentFocusFlash.add = true;
}
function removeFocusFlash()
{//清除flash定位
    if(CurrentFocusFlash.add)
    { 
        AjaxMap.removeObject(CurrentFocusFlash);
        CurrentFocusFlash.add = false;
    }
}
//弹出信息框的预定义内容
var PopWinInfo={
Normal:'<table width="383" border="0" cellspacing="0" cellpadding="0">  <tr>    <td rowspan="3"><div id="mapPointer" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'Images/PopWin/pointer.png\',sizingMethod=scale);width:76px;height:210px;"></div></td>  </tr>  <tr>    <td width="300" valign="top"><div style="filter:alpha(opacity=50);">      <table width="100%" border="0" cellpadding="0" cellspacing="0">        <tr>          <td><table width="100%" border="0" cellpadding="0" cellspacing="0" background="Images/PopWin/bgtitle.png">              <tr>                <td height="23"><div class="popwintitle">{@title}</div></td><td width="24" align="center"><img src="Images/PopWin/close.gif" width="20" height="20" onclick="closePopWin();" align="absmiddle" style="cursor:pointer;margin-top:2px;" alt="关闭"></td></tr></table></td></tr><tr><td height="176" align="center"><iframe src="{@url}" frameborder="0" scrolling="no" width="300" height="176"></iframe></td>        </tr>      </table>    </div></td>    <td><div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'Images/PopWin/right.png\',sizingMethod=scale);width:7px;height:199px;"></div></td>  </tr>  <tr>    <td colspan="2" valign="top"><div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'Images/PopWin/foot.png\',sizingMethod=scale);width:307px;height:6px; font-size:10px;"></div></td>  </tr></table>',
District:'',
SubmitPOI:'<table width="383" border="0" cellspacing="0" cellpadding="0">  <tr>    <td rowspan="3"><div id="mapPointer" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'Images/PopWin/pointer.png\',sizingMethod=scale);width:76px;height:210px;"></div></td>  </tr>  <tr>    <td width="300" valign="top"><div style="filter:alpha(opacity=50);">      <table width="100%" border="0" cellpadding="0" cellspacing="0">        <tr>          <td><table width="100%" border="0" cellpadding="0" cellspacing="0" background="Images/PopWin/bgtitle.png">              <tr>                <td height="23"><div class="popwintitle">{@title}</div></td><td width="24" align="center"><img src="Images/PopWin/close.gif" width="20" height="20" onclick="closeLabelPopWin();" align="absmiddle" style="cursor:pointer;margin-top:2px;" alt="关闭"></td></tr></table></td></tr><tr><td height="176" align="center"><iframe src="{@url}" frameborder="0" scrolling="no" width="300" height="176"></iframe></td>        </tr>      </table>    </div></td>    <td><div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'Images/PopWin/right.png\',sizingMethod=scale);width:7px;height:199px;"></div></td>  </tr>  <tr>    <td colspan="2" valign="top"><div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'Images/PopWin/foot.png\',sizingMethod=scale);width:307px;height:6px; font-size:10px;"></div></td>  </tr></table>',
Dialog:'<table width="307" border="0" cellspacing="0" cellpadding="0">    <tr>    <td width="300" valign="top"><div style="filter:alpha(opacity=50);">      <table width="100%" border="0" cellpadding="0" cellspacing="0">        <tr>          <td><table width="100%" border="0" cellpadding="0" cellspacing="0" background="Images/PopWin/bgtitle.png">              <tr>                <td height="23"><div class="popwintitle">{@title}</div></td><td width="24" align="center"><img src="Images/PopWin/close.gif" width="20" height="20" onclick="closePopWin();" align="absmiddle" style="cursor:pointer;margin-top:2px;" alt="关闭"></td></tr></table></td></tr><tr><td height="176" align="center"><iframe src="{@url}" frameborder="0" scrolling="no" width="300" height="176"></iframe></td>        </tr>      </table>    </div></td>    <td><div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'Images/PopWin/right.png\',sizingMethod=scale);width:7px;height:199px;"></div></td>  </tr>  <tr>    <td colspan="2" valign="top"><div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'Images/PopWin/foot.png\',sizingMethod=scale);width:307px;height:6px; font-size:10px;"></div></td>  </tr></table>'
}
//当前信息框对象
var CurrentPOIPopWin = null;
CurrentPOIPopWin = document.createElement("div");
CurrentPOIPopWin.innerHTML = PopWinInfo.Normal;
CurrentPOIPopWin.yOffset = -140;  
CurrentPOIPopWin.style.zIndex = 10000;   
CurrentPOIPopWin.add = false;
//poi
function viewInMap(o)
{//在地图中查看POI信息 包含属性 x y title poiid
    addFocusFlash(o.x,o.y);
    //移动到中心
    var s = AjaxMap.getCurrentScale();
    s = s > DefaultZoomSacle?DefaultZoomSacle:s;
	AjaxMap.zoomTo(o.x,o.y,s,false,0);//可以控制偏移	
	//打开提示框
    //openPopWin(o);
}
function openPopWin(o)
{//打开信息框 包含属性 x y title poiid
   if(CurrentPOIPopWin.add)
   {
        AjaxMap.removeObject(CurrentPOIPopWin);
        CurrentPOIPopWin.add =false;
   }
    AjaxMap.addObjectGeo(o.x,o.y,CurrentPOIPopWin);
    var content = PopWinInfo.Normal.replace("{@title}",o.title);
    var url = "popview.htm?title="+o.title+"&tp="+o.type + "&id=" + o.poiid;  
    //alert(url);    
    content = content.replace("{@url}",url)
    CurrentPOIPopWin.innerHTML = content;
    CurrentPOIPopWin.type = o.type;
    CurrentPOIPopWin.add = true;
    CurrentPOIPopWin.refobject = o;
}
function closePopWin()
{//关闭信息框
   if(CurrentPOIPopWin.add)
   {
        AjaxMap.removeObject(CurrentPOIPopWin);
        CurrentPOIPopWin.add =false;
   }   
   removeFocusFlash();
}
//poi列表 城区生活查询
var poilist = [];
function clearPOIList()
{//清除地图中的poi
	for(var i = 0;i<poilist.length;i++)
	{
		var poi = poilist[i];
		AjaxMap.removeObject(poi);
	}
	poilist=[];
	minx = MAX;
	maxx = MIN;
	miny = MAX;
	maxy = MIN;
}
var minx=MAX,maxx=MIN,miny=MAX,maxy=MIN;
function addPOI2Map(d)
{//增加一个poi 并求得它们的范围
	var x = parseFloat(d.x);
    var y = parseFloat(d.y);
    if(minx > x)
    {
    	minx = x;
    }
    if(maxx < x)
    {
    	maxx = x;
    }
    if(miny > y)
    {
    	miny = y;
    }
    if(maxy < y)
    {
    	maxy = y;
    }
	var poi = createDivImage(true,d.id,"Marker/"+d.id.replace("poi","")+".png",31,38,0,0,d.title,"pointer",9999);
    poi.xOffset = -15;
    poi.yOffset = -38;
    poi.x = x;
    poi.y = y;
    poi.poiid = d.poiid;
    poi.type=d.type;
    poi.onclick = viewPOI;
	AjaxMap.addObjectGeo(x,y,poi);
	poilist.push(poi);
}
function viewPOIExtent()
{//放大到poi的范围
	AjaxMap.zoomToExtents(minx,miny,maxx,maxy);
}
function viewPOI()
{//查看poi
	viewInMap(this);
}

//道路
var roadPolyline = null;
function showroad(o)
{//显示道路  
	removeRoad();
    var pathlist = o.pathlist;
    var points = [];
    var pts = pathlist.split(',');
    for(var i=0;i<pts.length;i++)
    {
	    var pt = new Point();
	    pt.x = parseFloat(pts[i]);
	    i++;
	    pt.y = parseFloat(pts[i]);
	    points.push(pt);
    }

    roadPolyline = new Polyline(points,"#0000ff",4,0.8,o.title);
    AjaxMap.addVectorObject(roadPolyline);   
    var ext = roadPolyline.calculateBounds();
    AjaxMap.zoomToExtents(parseFloat(ext.minX),parseFloat(ext.minY),parseFloat(ext.maxX),parseFloat(ext.maxY));
}
function removeRoad()
{
    if(roadPolyline != null)
	{
		AjaxMap.removeOverlay(roadPolyline);
	}
}
//公交
var buswayPolyline = [];
var buswayColors = ["blue","#9900ff"]
var stationPoints = [];
var busPos = [];
var busMarker =createDivImage(true,"cBusMarker","Marker/Bus.png",40,23,0,0,"公交车","help",9999);
busMarker.xOffset = -20;
busMarker.yOffset = -20;
busMarker.add =false;


    
var trackBus = null;
function showbus(o)
{//显示公交线路
    clearMarkers();
    var pathlist = o.pathlist;
    var stations = o.station;
    var points = [];
    var roadpart = [];
    if(pathlist.indexOf('|') != -1)
    {
        var parts = pathlist.split('|');
        for(var k=0;k<parts.length;k++)
        {
            var partpoints = [];
            var part = parts[k];
            var pts = part.split(',');
            for(var i=0;i<pts.length;i++)
            {
	            var pt = new Point();
	            pt.x = parseFloat(pts[i]);
	            i++;
	            pt.y = parseFloat(pts[i]);
	            points.push(pt);
	            partpoints.push(pt);
            } 
            //alert(buswayColors[k]);
            var busway = new Polyline(partpoints,buswayColors[k],4,0.8,o.title);
            roadpart.push(busway);
        }
    }
    else
    {
        var pts = pathlist.split(',');
        for(var i=0;i<pts.length;i++)
        {
	        var pt = new Point();
	        pt.x = parseFloat(pts[i]);
	        i++;
	        pt.y = parseFloat(pts[i]);
	        points.push(pt);
        }
        var busway = new Polyline(points,buswayColors[k],4,0.8,o.title);
        roadpart.push(busway);
    }
    var ss = stations.split(',');
    for(var i=0;i<ss.length;i++)
    {//经过的公交站点
    	var stationname = ss[i];
    	var x = ss[++i];
    	var y = ss[++i];
    	var station = createDivImage(true,"cstation","Marker/station_small.png",16,16,0,0,stationname,"help",9999);
	    station.xOffset = -10;
	    station.yOffset = -20;
	    station.x = x;
	    station.y = y;
		AjaxMap.addObjectGeo(x,y,station);
		stationPoints.push(station);
    }
    if(o.exchange)
    {//换乘站
        var exname = o.exchange;
        var expos  = o.exchangepos;
        if(exname!="null" && exname.indexOf('|') == -1)
        {
            var exchange = createDivImage(true,"exchange","Marker/Exchange.png",31,38,0,0,"换乘站："+exname,"pointer",9999);
            exchange.xOffset = -15;
            exchange.yOffset = -38;
            var pos = expos.split(',');
            AjaxMap.addObjectGeo(parseFloat(pos[0]),parseFloat(pos[1]),exchange);
            busPos.push(exchange);
        }
        else
        {
            //2个换乘站
        }
        //起点
        var startpos = points[0];
        var startstation = createDivImage(true,"startstation","Marker/Start.png",31,38,0,0,"起点：" + ss[0],"pointer",9999);
        startstation.xOffset = -15;
        startstation.yOffset = -38;
        AjaxMap.addObjectGeo(startpos.x,startpos.y,startstation);
        busPos.push(startstation);
        //终点
        var endpos = points[points.length-1];
        var endstation = createDivImage(true,"endstation","Marker/End.png",31,38,0,0,"终点：" + ss[ss.length-3],"pointer",9999);
        endstation.xOffset = -15;
        endstation.yOffset = -38;
        AjaxMap.addObjectGeo(endpos.x,endpos.y,endstation);
        busPos.push(endstation);
    }
    
    //线路表示
    var ext = null;
    for(var i = 0;i<roadpart.length;i++)
    {
        var busway = roadpart[i];
        AjaxMap.addVectorObject(busway); 
        buswayPolyline.push(busway);
        var bnd = busway.calculateBounds();
        if(ext == null)
        {
            ext= bnd;
        }
        else
        {
            ext.extend(bnd);
        }
    }     
    //缩放到范围     
    AjaxMap.zoomToExtents(parseFloat(ext.minX),parseFloat(ext.minY),parseFloat(ext.maxX),parseFloat(ext.maxY));    
	var startpt = points[0];
	AjaxMap.addObjectGeo(startpt.x,startpt.y,busMarker);
	busMarker.add = true;
	//动画
    if(trackBus) trackBus.pause();
    trackBus = new TrackObject(points,100,0.001,RunBus);
    trackBus.move();	
}
function clearbus()
{//清除公交线路
	for(var i = 0;i<buswayPolyline.length;i++)
	{
		var o = buswayPolyline[i];
		AjaxMap.removeOverlay(o);
	}
	for(var i = 0;i<stationPoints.length;i++)
	{
		var o = stationPoints[i];
		AjaxMap.removeObject(o);
	}
	for(var i = 0;i<busPos.length;i++)
	{
		var o = busPos[i];
		AjaxMap.removeObject(o);
	}
	stations=[];
	busPos = [];
	if(trackBus) trackBus.pause();
	if(busMarker.add) AjaxMap.removeObject(busMarker);
}
function RunBus()
{//回调函数 播放公交车动画
	AjaxMap.moveObjectGeo(trackBus.point.x,trackBus.point.y,busMarker);
}
function replay()
{//重新播放公交车动画路径
	if(trackBus) trackBus.move();
}
function pause()
{//暂停 公交车行走
	if(trackBus) trackBus.pause();
}

//=========行政区划=========
var districtPolygon = null;
var districtName = "";
var districtx=0;
var districty=0;
function focusDistinct(o)
{//定位行政区
	var JSURL = "resource/District/"+o.distid+".js";
	districtName = o.title;
	call(JSURL,this,showDistinct);
}
function showDistinct(ringstext)
{
	//清除行政区
	clearDistinct();
	eval(ringstext);
    districtPolygon = new MultiPolygon(rings,"#0000ff","#0000ff",3,0.5,districtName);
	AjaxMap.addOverlay(districtPolygon);
	var ext = districtPolygon.polygons[0].calculateBounds();
    AjaxMap.zoomToExtents(parseFloat(ext.minX),parseFloat(ext.minY),parseFloat(ext.maxX),parseFloat(ext.maxY));   
}
function clearDistinct()
{//清除行政区
	if(districtPolygon != null)
	{
		AjaxMap.removeOverlay(districtPolygon);
	}
}
///显示信息框
function openDistinctPopWin(o)
{
	//Flash定位
	addFocusFlash(o.x,o.y);
    //打开信息框
    if(CurrentPOIPopWin.add)
    {
        AjaxMap.removeObject(CurrentPOIPopWin);
        CurrentPOIPopWin.add =false;
    }
    AjaxMap.addObjectGeo(o.x,o.y,CurrentPOIPopWin);
    var content = PopWinInfo.Normal.replace("{@title}",o.title);
    var url = "XzqhView.htm?id=" + o.distid;
    content = content.replace("{@url}",url)
    CurrentPOIPopWin.innerHTML = content;
    CurrentPOIPopWin.add = true;
    CurrentPOIPopWin.refobject = null;
}

function clearMarkers()
{
    closePopWin();
    clearDistinct();
    clearbus();
    clearPOIList();
    clearSiteList();
}
