﻿var gmap = null;
var polyline=null;
var dynMapOv = null;
var mapExtension = null;
var gOverlays = null;
var ov = null;
var objHash = null, currentHash = null;// new Hash();
var markerList=null;
var startAndEndMarkers = null;
var contextmenu = null;
var clickedPixel; 
var startMarker = null;
var endMarker = null;
var polylineArr = null;
var query=null;
var queryPOI=null;
var queryLineInfo=null;
// 版权信息
var copyRight = null;
// 地图区域范围
var maprange = null;
var oTextbox = null;
var oStartbox = null;
var oEndbox = null;
var busStationURL="http://58.63.71.44:8399/arcgis/rest/services/gmQueryData/MapServer/1";
var busLineURL="http://58.63.71.44:8399/arcgis/rest/services/gmQueryData/MapServer/2";
var geoURL="http://58.63.71.44:8399/arcgis/rest/services/Geometry/GeometryServer";
var POIurl="http://58.63.71.44:8399/arcgis/rest/services/bufferServer/MapServer/0";
var lineUrl="http://58.63.71.44:8399/arcgis/rest/services/bufferServer/MapServer/1";
var geoMetryUrl="http://58.63.71.44:8399/arcgis/rest/services/Geometry/GeometryServer";
var tileURL="http://58.63.71.44:8399/arcgis/server/arcgiscache/publicServerWGS84";//publicServer//publicServerWGS84  //Web
var statellURL="http://58.63.71.44:8399/arcgis/rest/services/publicServerSatellite/MapServer";
function initialize() {
	//Load Google Maps
	gmap = new GMap2(document.getElementById("gmap"));
	objHash = new markHash();
	polylineArr = new Array();
	var centerat = new GLatLng(23.136,113.255);
	gmap.addControl(new G_NORMALMapTypeControl(gmap));
	gmap.addControl(new G_SATEMapTypeControl(gmap));
	gmap.addControl(new fullScreenControl());
	gmap.addControl(new GScaleControl());
	gmap.setCenter(centerat, 13);
	 // 设定地图最大显示范围
    maprange = new GLatLngBounds(new GLatLng(22.63,113.09),new GLatLng(23.83,114.02));
    // 监听地图移动的事件
    GEvent.addListener(gmap, "dragend", function() {
      checkBounds(maprange);
    });
    // 实例化版权信息
	copyRight = new GCopyrightCollection("地图数据©2009 ");
	copyRight.addCopyright(new GCopyright('gzmtr ',maprange,8,'gzmtr.cn'));
	// ===============右键菜单方法====================
	contextmenu = document.createElement("div");
    contextmenu.style.visibility="hidden";
    contextmenu.style.background="#ffffff";
    contextmenu.style.border="1px solid #8888FF";
    contextmenu.innerHTML = '<a href="javascript:void(0)" onclick="zoomIn()"><div class="context">&nbsp;&nbsp;放大&nbsp;&nbsp;<\/div><\/a>'
                          + '<a href="javascript:zoomOut()"><div class="context">&nbsp;&nbsp;缩小&nbsp;&nbsp;<\/div><\/a>'
                          + '<a href="javascript:zoomInHere()"><div class="context">&nbsp;&nbsp;以此放大&nbsp;&nbsp;<\/div><\/a>'
                          + '<a href="javascript:zoomOutHere()"><div class="context">&nbsp;&nbsp;以此缩小&nbsp;&nbsp;<\/div><\/a>'
                          + '<a href="javascript:centreMapHere()"><div class="context">&nbsp;&nbsp;以此居中放置地图&nbsp;&nbsp;<\/div><\/a>';
    gmap.getContainer().appendChild(contextmenu);
    // 右键单击监听
    GEvent.addListener(gmap,"singlerightclick",function(pixel,tile) {
      clickedPixel = pixel;
      var x=pixel.x;
      var y=pixel.y;
      if (x > gmap.getSize().width - 120) { x = gmap.getSize().width - 120 }
      if (y > gmap.getSize().height - 100) { y = gmap.getSize().height - 100 }
      var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(x,y));  
      pos.apply(contextmenu);
      contextmenu.style.visibility = "visible";
    });   
      // 在地图上点击后隐藏菜单
      GEvent.addListener(gmap, "click", function() {
        contextmenu.style.visibility="hidden";
      });
    // ===========================================
	var agsLayer = new GTileLayer(copyRight, 8, 18);
	agsLayer.getTileUrl = function(tile, zoom) {
		return tileURL+'/Layers/_alllayers/L'
				+ ('00' + (zoom).toString(10)).substring(('00' + (zoom)
						.toString(10)).length - 2)
				+ '/R'
				+ ('00000000' + tile.y.toString(16))
						.substring(('00000000' + tile.y.toString(16)).length - 8)
				+ '/C'
				+ ('00000000' + tile.x.toString(16))
						.substring(('00000000' + tile.x.toString(16)).length - 8)
				+ '.png'
	}

	var gzMapType = new GMapType( [ agsLayer ], G_NORMAL_MAP.getProjection(),
			"广州地图");

	gmap.addMapType(gzMapType);
	gmap.setMapType(gzMapType);

	gmap.addControl(new GLargeMapControl3D());
	ov = new GOverviewMapControl();

	ov.setMapType(gzMapType);
	gmap.addControl(ov);
	// ov.hide(true);
	gmap.enableScrollWheelZoom();
	oTextbox = new AutoSuggestControl(document.getElementById("trsWordSearch"),"trs",new SuggestionProvider());   	
}

//===============对应右键菜单方法====================
function zoomIn() {
  gmap.zoomIn();
  contextmenu.style.visibility="hidden";
}      
function zoomOut() {
  gmap.zoomOut();
  contextmenu.style.visibility="hidden";
}      
function zoomInHere() {
  var point = gmap.fromContainerPixelToLatLng(clickedPixel);
  gmap.zoomIn(point,true);
  contextmenu.style.visibility="hidden";
}      
function zoomOutHere() {
  var point = gmap.fromContainerPixelToLatLng(clickedPixel);
  gmap.setCenter(point,gmap.getZoom()-1);
  contextmenu.style.visibility="hidden";
}      
function centreMapHere() {
  var point = gmap.fromContainerPixelToLatLng(clickedPixel);
  gmap.setCenter(point);
  contextmenu.style.visibility="hidden";
}
//===============对应右键菜单方法====================
/**
 * 检查地图范围是否在设定的最大范围内
 */
function checkBounds(range)
{
  //若range包含地图中心，无须操作，直接返回即可
  if (range.contains(gmap.getCenter()))
  {
    return;
  } 
  var center = gmap.getCenter();
  var x = center.lng();
  var y = center.lat();
  
  // 获取各个顶点的位置
  var maxX = range.getNorthEast().lng();
  var maxY = range.getNorthEast().lat();
  var minX = range.getSouthWest().lng();
  var minY = range.getSouthWest().lat();
  
  // 取最接近地图中心的边界位置
  if (x < minX) {x = minX;}
  if (x > maxX) {x = maxX;}
  if (y < minY) {y = minY;}
  if (y > maxY) {y = maxY;}
  gmap.setCenter(new GLatLng(y,x));
}
function addTiledMap(gTileLayer) {
	//Add tile layer as a GTileLayerOverlay using mapExtension
	// alert("最大级别:"+gTileLayer.maxResolution());
	gOverlays = mapExtension.addToMap(gTileLayer);
}
// Create a base icon for all of our markers that specifies the 
// shadow, icon dimensions, etc.
var baseIcon = new GIcon(G_DEFAULT_ICON);
baseIcon.shadow = "http://www.google.cn/mapfiles/shadow50.png";
baseIcon.iconSize = new GSize(24, 38);
baseIcon.shadowSize = new GSize(38, 34);
baseIcon.iconAnchor = new GPoint(5, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
// Creates a marker whose info window displays the letter corresponding
// to the given index.
function createMarker(id, point, index, info) {


	var letter = index + 1;
	var letteredIcon = new GIcon(baseIcon);
	letteredIcon.image = "./images/mark/icon_blue" + letter
			+ ".png";
	// Set up our GMarkerOptions object
	markerOptions = {
		icon : letteredIcon,
		title: "点击展开窗口"
		};
	var marker = new GMarker(point, markerOptions);
	marker.id = id;
	// alert(marker);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(info);
	});
	return marker;
}
function createNormalMarker(id, point,info) {
	 var markerOptions = {
			title: "点击展开窗口"
			};
	var marker = new GMarker(point,markerOptions);
	marker.id = id;
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(info);
	});
	return marker;
}
/**
 * 创建起点标记
 * @param id
 * @param point
 * @param index
 * @param info
 * @return
 */
function createStartMarker(id, point, index, info) {
	if(startMarker!=null){
		gmap.removeOverlay(startMarker);
	}
	var letteredIcon = new GIcon(baseIcon);
	letteredIcon.image = "./images/mark/icon_start.png" ;
	// Set up our GMarkerOptions object
	markerOptions = {
		icon : letteredIcon,
		title: info
	};
	startMarker = new GMarker(point, markerOptions);
	startMarker.id = id;
	GEvent.addListener(startMarker, "click", function() {
		startMarker.openInfoWindowHtml("<b>" + info + "</b>");
	});
	return startMarker;
}
/**
 * 创建终点标记
 * @param id
 * @param point
 * @param index
 * @param info
 * @return
 */
function createEndMarker(id, point, index, info) {
	if(endMarker!=null){
		gmap.removeOverlay(endMarker);
	}
	var letteredIcon = new GIcon(baseIcon);
	letteredIcon.image = "./images/mark/icon_end.png" ;
	// Set up our GMarkerOptions object
	markerOptions = {
		icon : letteredIcon,
		title: info
	};
	endMarker = new GMarker(point, markerOptions);
	endMarker.id = id;
	GEvent.addListener(endMarker, "click", function() {
		endMarker.openInfoWindowHtml("<b>" + info + "</b>");
	});
	return endMarker;
}


/**
 * 创建自定义图片marker
 * @param id
 * @param LatLng
 * @param info
 * @param imgURL
 * @return
 */
function createPictureMarker(id, LatLng, info, imgURL) {
	//GLog.write(imgURL);
	/*
	 * var pic_Icon=new GIcon(); pic_Icon.id=id; pic_Icon.image=imgURL;
	 * //pic_Icon.shadow = "http://www.google.cn/mapfiles/shadow50.png";
	 * pic_Icon.iconSize = new GSize(30, 30); //pic_Icon.shadowSize = new
	 * GSize(50, 50); pic_Icon.iconAnchor = new GPoint(9, 34);
	 * pic_Icon.infoWindowAnchor = new GPoint(15, 15);
	 */

	var mylabel = {
		"url" : "./images/index/whiteBorder.png",
		"anchor" : new GPoint(0, 0),
		"size" : new GSize(50, 50)
	};
	var pic_Icon = new GIcon();

	var icon = new GIcon(G_DEFAULT_ICON,imgURL, mylabel);
	icon.iconSize = new GSize(50, 50);
	icon.shadow = "./images/index/shadow3.png";
	icon.shadowSize = new GSize(55, 55);
	icon.iconAnchor = new GPoint(9, 34);
	icon.infoWindowAnchor = new GPoint(25, 25);
	var markerOptions = {
		icon : icon,
		title:"点击展开窗口"
	};
	var pic_marker = new GMarker(LatLng, markerOptions);// alert(imgURL);
	pic_marker.id = id;
	// alert(marker);
	GEvent.addListener(pic_marker, "click", function() {
		pic_marker.openInfoWindowHtml("<div>" + info + "<div>");
	});
	return pic_marker;
}
 function createMetroSMarker(id, LatLng, info) {
	 var Icon = new GIcon(G_DEFAULT_ICON);
	 Icon.shadow = "http://www.google.cn/mapfiles/shadow50.png";
	 Icon.iconSize = new GSize(24, 29);
	 Icon.shadowSize = new GSize(38, 34);
	 Icon.iconAnchor = new GPoint(5, 34);
	 Icon.infoWindowAnchor = new GPoint(9, 2);
	 
		var letteredIcon = new GIcon(Icon);
		letteredIcon.image = "./images/index/MetroStation.gif" ;
		letteredIcon.iconAnchor = new GPoint(15, 34);
		// Set up our GMarkerOptions object
		markerOptions = {
			icon : letteredIcon,
			title: "点击展开窗口"
		};
		var pic_marker = new GMarker(LatLng, markerOptions);// alert(imgURL);
		pic_marker.id = id;
		// alert(marker);
		GEvent.addListener(pic_marker, "click", function() {
			pic_marker.openInfoWindowHtml("<div>" + info + "<div>");
		});
		return pic_marker;
	}
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
// 测距方法
 var routeVertices = [];
 var routeOverlay;
 var endMeasureMarker=null;
 var TlaberList=[];
 var startMeasureMarker=null;
 var mapMeasureListener=null;
 var measureDBListener=null;
 var msNotFinish=null;
function enableDraw(){
	if(msNotFinish){
		return;		
	}else{
		gmap.disableDoubleClickZoom();
		mapMeasureListener=GEvent.addListener(gmap, 'click', handMapClick);
		measureDBListener=GEvent.addListener(gmap, 'dblclick', handMapdblClick);
		msNotFinish=true;
	}
}
function handMapdblClick(overlay,latlng) {
	//alert(overlay);
	// GLog.write("dblclick");
	  if (!overlay) {
		var imageIcon = new GIcon(G_DEFAULT_ICON);
		imageIcon.image = "./images/index/close.gif" ;
		imageIcon.iconSize = new GSize(14, 14);
		imageIcon.iconAnchor = new GPoint(0,0);
		imageIcon.shadow = "./images/pixel.png";
		markerOptions = {
			icon : imageIcon
		};
		closeMeasureMarker = new GMarker(latlng, markerOptions);
	    gmap.addOverlay(closeMeasureMarker);
	    
	    GEvent.removeListener(mapMeasureListener);
	    GEvent.removeListener(measureDBListener);
	    
	    GEvent.addListener(closeMeasureMarker, 'click', function(){
	    	for(var j=0;j<TlaberList.length;j++){
	    		//GLog.write(TlaberList.length);
	    		gmap.removeTLabel(TlaberList[j]);
	    	}
	    	routeVertices=[];
	    	TlaberList=[];
	    	
	    	// GLog.write('closeMeasureMarker');
		    // GEvent.clearListeners(gmap,'click');
		    GEvent.clearListeners(closeMeasureMarker, 'click');

	    	gmap.removeOverlay(closeMeasureMarker);
	    	gmap.removeOverlay(routeOverlay);
	    	gmap.removeOverlay(endMeasureMarker);
	    	gmap.removeOverlay(startMeasureMarker);
	    	//测量结束,重设状态
	    	msNotFinish=false;
		   // GEvent.removeListener(handMapdblClick);
	    }
	    	);
	    
	    gmap.enableDoubleClickZoom();
	    }
	    return;
	}
function handMapClick(overlay,latlng) {
	//alert(overlay);
	  if (!overlay) {
	    addRouteVertex(latlng);
	  }
	}
function addRouteVertex(vertex) {
	  routeVertices.push(vertex);
	  // GLog.write(routeVertices.length);
	  if (routeVertices.length > 1)    {
		  if(routeOverlay){
				 gmap.removeOverlay(routeOverlay)
			  }
			  routeOverlay = new GPolyline(routeVertices, '#FF9601', 8, 0.5);
			  gmap.addOverlay(routeOverlay);
		  calculateLengths2(vertex);
		  if(endMeasureMarker){
			  gmap.removeOverlay(endMeasureMarker);
		  }
		   //结束标签
			var lIcon = new GIcon(baseIcon);
			lIcon.image = "./images/mark/icon_end.png" ;
			// Set up our GMarkerOptions object
			markerOptions = {
				icon : lIcon
			};
		  endMeasureMarker=new GMarker(vertex,markerOptions);
		  gmap.addOverlay(endMeasureMarker);
	  } else {
		  //开始标签
			var letteredIcon = new GIcon(baseIcon);
			letteredIcon.image = "./images/mark/icon_start.png" ;
			// Set up our GMarkerOptions object
			markerOptions = {
				icon : letteredIcon
			};
			startMeasureMarker = new GMarker(vertex, markerOptions);
	    gmap.addOverlay(startMeasureMarker);
	  }
	}
var i=0;
function calculateLengths2(vertex){
	  var info;
	  if((leg=routeOverlay.getLength())>1000){
		  info=(leg/1000).toFixed(2)+"公里";
	  }else{
		  info=(leg).toFixed(2)+"米";
	  }
	  
	  var contentInfo= '<div class="measurePanel"><div><nobr>'
		  +info+'</nobr></div></div>';
      var label924 = new TLabel();
      label924.id = 'label924'+(i++);
      label924.anchorLatLng = vertex;
      label924.anchorPoint = 'topLeft';
      label924.content = contentInfo;
      label924.percentOpacity = 90;
      gmap.addTLabel(label924);
      TlaberList.push(label924);
}
function enableDrawing() {
    polyline && gmap.removeOverlay(polyline);

    // add a polyline to the gmap with no vertices
    polyline = new GPolyline([], "#0000FF", 5, 1.0);
    gmap.addOverlay(polyline);

    // register a listener for "endline" event and enable drawing
    GEvent.addListener(polyline, "endline", calculateLengths);
    polyline.enableDrawing();
  }

  function calculateLengths() {
   GLog.write(polyline.getLength());
    var geometryService = new esri.arcgis.gmaps.Geometry(geoURL);
    geometryService.getLengths([ [ polyline ] ], displayLengths);
  }

  function displayLengths(response, error) {
    // Display error message, if any
    if (error) {
      alert("Error " + error.code + ": " + (error.message || (error.details && error.details.join(" ")) || "Unknown error" ));
      return;
    }

    // Display lengths
    GLog.write("Length: " + response.lengths[0] + " m");
  }
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
function addMark(arrLat, arrLng, arrInfo) {
	clearAll();	
	markerList = new Array();

	var j = -1;	
	for ( var i = 0; i < arrLat.length; i++) {
		var point = new GLatLng(arrLng[i], arrLat[i]);
		j++;
		var keyValue = objHash.getKey(i);
		var markerTem = createMarker(keyValue, point, i, arrInfo[i]);
		markerList.push(markerTem);		
		gmap.addOverlay(markerTem);
	}
	// 将地图范围定位到查询结果的经纬度范围
	var xar = arrLat.sort();
	var yar = arrLng.sort();
	var sw = new GLatLng(yar[0], xar[0]);
	var ne = new GLatLng(yar[yar.length - 1], xar[xar.length - 1]);
	var gBounds = new GLatLngBounds(sw, ne);
	var centerPoint = gBounds.getCenter();
	var current_level = gmap.getBoundsZoomLevel(gBounds);
	gmap.setCenter(centerPoint, current_level);
}

/**
 * 自定义图片画点
 */
function createImageMarker(id, point, index, info,imgurl) {
	
	var letteredIcon = new GIcon(baseIcon);
	letteredIcon.image = imgurl;
	// Set up our GMarkerOptions object
	markerOptions = {
		icon : letteredIcon,
		title: "点击展开窗口"
		};
	var marker = new GMarker(point, markerOptions);
	marker.id = id;
	// alert(marker);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(info);
	});
	return marker;
}

/**
 * 自定义图片画点
 */
function addImageMark(arrLat, arrLng, arrInfo, imgurl) {
	clearAll();	
	markerList = new Array();

	var j = -1;	
	for ( var i = 0; i < arrLat.length; i++) {
		var point = new GLatLng(arrLng[i], arrLat[i]);
		j++;
		var keyValue = objHash.getKey(i);
		var markerTem = createImageMarker(keyValue, point, i, arrInfo[i], imgurl);
		markerList.push(markerTem);		
		gmap.addOverlay(markerTem);
	}
	// 将地图范围定位到查询结果的经纬度范围
	var xar = arrLat.sort();
	var yar = arrLng.sort();
	var sw = new GLatLng(yar[0], xar[0]);
	var ne = new GLatLng(yar[yar.length - 1], xar[xar.length - 1]);
	var gBounds = new GLatLngBounds(sw, ne);
	var centerPoint = gBounds.getCenter();
	var current_level = gmap.getBoundsZoomLevel(gBounds);
	gmap.setCenter(centerPoint, current_level);
}
/**
 * 添加多个地铁站点标签，并定位到合适显示范围
 * @param arrLat 纬度数组
 * @param arrLng 经度数组
 * @param arrInfo 信息数组
 * @return
 */
function addMetroMarks(arrLat, arrLng, arrInfo) {
	clearAll();
	markerList = new Array();
	var j = -1;
	for ( var i = 0; i < arrLat.length; i++) {
		var point = new GLatLng(arrLng[i], arrLat[i]);
		j++;
		var keyValue = objHash.getKey(i);
		var markerTem = createMetroSMarker(keyValue, point,arrInfo[i]);
		markerList.push(markerTem);
		gmap.addOverlay(markerTem);
	}
	// 将地图范围定位到查询结果的经纬度范围
	var xar = arrLat.sort();
	var yar = arrLng.sort();
	var sw = new GLatLng(yar[0], xar[0]);
	var ne = new GLatLng(yar[yar.length - 1], xar[xar.length - 1]);
	var gBounds = new GLatLngBounds(sw, ne);
	var centerPoint = gBounds.getCenter();
	var current_level = gmap.getBoundsZoomLevel(gBounds);
	gmap.setCenter(centerPoint, current_level);
	
}
function showInfoWindow(key, info) {
	//alert(key);
	for ( var i = 0; i < markerList.length; i++) {
		if (i == key)// markerList[i].id == key
			markerList[i].openInfoWindowHtml(info);
	}
}
function showInfoByLatLng(x,y,info){
	var latLng = new GLatLng(y,x);
	map.openInfoWindowHtml(latLng,info);
}
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
/**
 * 查询公交线路
 * @param objID
 * @return
 */
function showMetroLine(objID) {
	//清除先前所有标注
	clearAll();
	polylineArr = new Array();
	
	qtask = new esri.arcgis.gmaps.QueryTask(busLineURL);
	query = new esri.arcgis.gmaps.Query();
	query.where = "objectid=" + objID;
	query.returnGeometry = true;

	// execute query task
	qtask.execute(query, false, lineQuerycallback);// alert('fdf');

}
function lineQuerycallback(fset) {
	//22alert(fset);
	var paths = fset.features[0].geometry[0];
	var Count=paths.getVertexCount();// getVertex(index:Number)
	// alert(Count);
	var Vertex=[];

	for(var i=0;i<Count;i++){
		var point=paths.getVertex(i);
		// alert(point);
		Vertex[i]=point;
	}
	var pathsBound = paths.getBounds();// 线路视野范围
	var centerPoint = pathsBound.getCenter();
	var current_level = gmap.getBoundsZoomLevel(pathsBound);
	gmap.setCenter(centerPoint, current_level);
    var busline = new GPolyline(Vertex, "#009966", 10, 0.75);
    //添加线路mark到数组中，便于管理
    polylineArr.push(busline);
    gmap.addOverlay(busline);
	/*
	 * return; // alert(fset.features.length); var overlayOptions = {
	 * strokeColor : "#009966", strokeWeight : 10, strokeOpacity : 0.75,
	 * fillColor : "#FFFFFF", fillOpacity : 0.4 }; // add the feature set to
	 * google gmap without any style if (gOverlays) {
	 * mapExtension.removeFromMap(gOverlays); } gOverlays =
	 * mapExtension.addToMap(fset, overlayOptions, null);// window.toString() //
	 * alert(fset.toJSONString());
	 */
}
/**
 * 显现线路所有站点
 * @return
 */
var divID=null;
function showBusStation(lineName,num){
	// alert(currentHash);
	markerList = new Array();
	
	divID=num;
	var divC=$(window.frames["homeMtrIfName"].document).find('label');
	for(var j=0;j<divC.length;j++){	
		divC[j].firstChild.style.display="none";
	}
	divID.innerHTML="<div style='width:100%;position:relative;left:40%;'><img src='../images/index/loading.gif' /></div>";
	divID.style.display="block";
	
	//alert($.trim(lineName)+"|test");
	qtask = new esri.arcgis.gmaps.QueryTask(busStationURL);
	query = new esri.arcgis.gmaps.Query();
	query.where = "TYPE = '"+$.trim(lineName)+"' order by CLASS";
	query.returnGeometry = true;

	// execute query task
	qtask.execute(query, false, busStationCallback);// alert('fdf');
}
function busStationCallback(fset){
		
	if(!fset||fset.features.length==0){
		divID.innerHTML="<div style='background-color:#F3F3F3;border: 1px solid #DBE6E7;width:100%;'>很抱歉,找不到相关站点!</div>";
		divID.style.display="block";
		return;
	}
	var lengthMax=fset.features.length;
	var features=fset.features;
	var temp="<table style='background-color:#F3F3F3;border: 1px solid #DBE6E7;width:100%;'>";
	for(var i=0;i<lengthMax;i++){
		//alert(i);
		var NAME=features[i].attributes.NAME;
		var geometry=features[i].geometry[0];
		var gPoint=geometry.getLatLng();
		var bStationmark=createNormalMarker(i,gPoint,NAME)
		
		markerList.push(bStationmark);
		
		gmap.addOverlay(bStationmark);
		
		if((i+1)%2==0){
			temp+="<td width='50%'>"+(i+1)+" . <a href='javascript:void(0)' onclick='parent.showPointInfo("+gPoint.lat()+","+gPoint.lng()+",\""+NAME+"\")'>"+NAME+"</a></td></tr>";
		}else{
			temp+="<tr><td width='50%'>"+(i+1)+" . <a href='javascript:void(0)' onclick='parent.showPointInfo("+gPoint.lat()+","+gPoint.lng()+",\""+NAME+"\")'>"+NAME+"</a></td>";
		}
	}
	if(lengthMax%2==0){
		temp+="</table>";
	}else{
		temp+="</tr></table>";
	}
	divID.innerHTML=temp;
}
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
var stationMarker=null;
function locateMetroStation(lat, lng,name,info, imgName) {
	if(stationMarker){
		gmap.removeOverlay(stationMarker);
	}
	//clearAll();
	// markerList= new Array();
	var LatLng = new GLatLng(lng, lat);
	var imgURL = "./sta_pic/" + imgName;
	info+=busQueryWindowText("metroStationA",lat,lng,name);
	stationMarker = createMetroSMarker('markerST', LatLng, info);
	gmap.addOverlay(stationMarker);
	gmap.setCenter(LatLng, 16);
	stationMarker.openInfoWindowHtml(info);
	// markerList.push(stationMarker);
	// GLog.write(stationMarker.id);

}
function clearMarkList(){
	if (markerList) {	
		for ( var i = 0; i < markerList.length; i++) {
			gmap.removeOverlay(markerList[i]);
		}
	}
}
function clearStartAndEndMarkers(){
	if(startAndEndMarkers){
		for ( var i = 0; i < startAndEndMarkers.length; i++) {
			gmap.removeOverlay(startAndEndMarkers[i]);
		}
	}
}
function clearPolylineArr(){
	if (polylineArr) {	
		for ( var i = 0; i < polylineArr.length; i++) {
			gmap.removeOverlay(polylineArr[i]);
		}
	}
}
function clearAll(){
	clearMarkList();
	clearStartAndEndMarkers();
	clearPolylineArr();
}
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
function infoText(numID,lat,lng,INFO_NAME,pic_path_name){
	var imgURL="./images/venues_pic/"+pic_path_name;
	// alert(imgURL);
	var info="<div><label><b>"+INFO_NAME+"</b><label></div><img class='infoImg' src='"+imgURL+"'/></div>"
	
	return info+busQueryWindowText(numID,lat,lng,INFO_NAME);
}
/*-- 非站内信息(全文检索、分类检索) --*/
function yanxianInfoText(numID,lat,lng,infoName,address,bigType_name,tagName,passAgeWay,position,mtrStnName,mtrStnID){
	var content="";
	// alert(content);
	
	content+='<table  style="font-weight: none;" width="250px" border = "0">'
		+'<tr><td colspan="3"><b>'+infoName+'</b></td><td></td></tr>'
         + '<tr>'
         +  ' <td colspan="3">地址：'+address+'</td>'
       +' </tr>'
       +' <tr>'
      +      '<td colspan="3">分类：'+bigType_name+'</td>'
       +' </tr>'
/*
 * + '<tr >' + '<td colspan="3">标签：'+tagName+'</td>' +'</tr>'
 */
       +' <tr class="h_rsInfo">'
         +  ' <td colspan="3">'
         +   	'	最近地铁站：<img src="./images/trsImage/station_logo.bmp" align="texttop" >'
          +  	'	</img><a href = "././stationInfo?mtrStnID='+mtrStnID+'" target="_blank">'
           + 	mtrStnName+"</a><br/>"
		   +     passAgeWay+" "
		     +   position
           +' </td>'
      + ' </tr>'
   +'</table>';
	
	return content+busQueryWindowText(numID,lat,lng,infoName);
}
/**
 * 站内内容
 * @param numID
 * @param lat
 * @param lng
 * @param infoName
 * @param address
 * @param bigType_name
 * @param tagName
 * @param passAgeWay
 * @param position
 * @param mtrStnName
 * @param mtrStnID
 * @return
 */
function zhanneiInfoText(numID,lat,lng,infoName,address,bigType_name,tagName,passAgeWay,position,mtrStnName,mtrStnID){
	var content="";
	// alert(content);
	content+='<table  style="font-weight: none;" width="250px" border = "0">'
		+'<tr><td colspan="3"><b>'+infoName+'</b></td><td></td></tr>'
         + '<tr>'
         +  ' <td colspan="3">地址：'+address+'</td><br/>'
		   +     passAgeWay+" "
		     +   position
       +' </tr>'
       +' <tr>'
      +      '<td colspan="3">分类：'+bigType_name+'</td>'
       +' </tr>'
/*
 * + '<tr >' + '<td colspan="3">标签：'+tagName+'</td>' +'</tr>'
 */
   +'</table>';
	
	return content+busQueryWindowText(numID,lat,lng,infoName);
}
/**
 * 信息点内容
 * @param numID
 * @param lat
 * @param lng
 * @param infoName
 * @param address
 * @param phone
 * @return
 */
function POIInfoText(numID,lat,lng,infoName,address,phone){
	var content="";
	// alert(content);
	content+='<table  style="font-weight: none;" width="250px" border = "0">'
		+'<tr><td colspan="3"><b>'+infoName+'</b></td><td></td></tr>'
         + '<tr>'
         +  ' <td colspan="3">地址：'+address+'</td>'
       +' </tr>'
       +' <tr>'
      +      '<td colspan="3">电话：'+phone+'</td>'
       +' </tr>'
   +'</table>';
	
	return content+busQueryWindowText(numID,lat,lng,infoName);
}
/**
 * 公交站点内容
 * @param numID
 * @param lat
 * @param lng
 * @param infoName
 * @param bigType_name
 * @return
 */
function busstationText(numID,lat,lng,infoName,bigTypeName){
	//alert(bigTypeName)
	var content="";
	// alert(content);
	content+='<table  style="font-weight: none;width:280px;" border = "0">'
		+'<tr><td colspan="3"><b>'+infoName+'</b></td><td></td></tr>'
       +'<tr>'
      +      '<td colspan="3">所属线路：'+bigTypeName+'</td>'
       +'</tr>'
   +'</table>';
	
	return content+busQueryWindowText(numID,lat,lng,infoName);
}
/**
 * WindowInfo公用的公交查询内容
 * @param numID
 * @param lng
 * @param lat
 * @param infoName
 * @return
 */
function busQueryWindowText(numID,lng,lat,infoName){
	var content='<div>';
	content='<div style="width:240px;" id="busQueryAContainer">'
		+'<div style="float:left;width:80px;height:28px;background: url(./images/index/busQuery_bg.jpg) no-repeat;">'
    +'<a style="margin-left:10px;COLOR: #5D9BC4;" onClick=\'displayGoHere("info_L_GoHere'+numID+'","info_L_There'+numID+'","info_LMtr'+numID+'","'+'info_mudi'+numID+'",this)\' href="javascript:void(0)"><div style="margin-top:8px;">从这里出发</div>'
    +'</a></div>'
        +'<div style="float:left;width:80px;height:28px;background: url(./images/index/underline_bg.jpg) no-repeat;"><a style="margin-left:16px;COLOR: #5D9BC4;" onClick=\'displayThere("info_L_GoHere'+numID+'","info_L_There'+numID+'","info_LMtr'+numID+'","'+'info_chufa'+numID+'",this)\' href="javascript:void(0)"><div style="margin-top:8px;">到达这里</div>'
        +'</a></div>'
        +'<div style="float:left;width:80px;height:28px;background: url(./images/index/underline_bg.jpg) no-repeat;"><a style="margin-left:16px;COLOR: #5D9BC4;" onClick=\'displayAround("info_L_GoHere'+numID+'","info_L_There'+numID+'","info_LMtr'+numID+'",this)\' href="javascript:void(0)"><div style="margin-top:8px;">查找周边</div></a>'
        +'</div></div>';
	content+='<div style="height:25px;width:280px;"><div id="info_LMtr'+numID+'" style="DISPLAY: none;">'
    +'周边：'
    +'<select id="info_s'+numID+'">'
    +'<option value="商" selected="" >商店</option>'
    +'<option value="餐">餐饮</option>'
    +'<option value="医院">医院</option>'
    +'<option value="邮局">邮局</option>'
    +'<option value="银行">银行</option>'
    +'</select>'
    +'范围：<input type="text" id="info_mi'+numID+'" onkeydown=\'bufferByEnter(document.getElementById("info_s'+numID+'").value,this.value,'+lat+','+lng+',event)\' onkeyup="onlyNum(this)" name="mile" style="width: 40px;" value="150" size="10" />米'
    +'<input type="button" name="aroundQuary" value="搜 索" onclick=\'bufferPoint(document.getElementById("info_s'+numID+'").value,document.getElementById("info_mi'+numID+'").value,'+lat+','+lng+')\' style="width:45px;height:24px;margin-bottom:-1px;" />'
    +'</div>'
    +'<div id="info_L_GoHere'+numID+'" style="DISPLAY: block;" class="h_rscount">'
    +'目的地：<input type="text" id="info_mudi'+numID+'"  name="mudi" style="width: 140px;" value="" size="30"'
    +'onkeydown=\'sendQueryPlacebyEnter("'+infoName+'",'+lng+','+lat+',this.value,1,"startPlace",event)\'/>'
    +'<input type="button" name="mudiQuary" value="出 发" onclick=\'sendQueryPlaceInfo("'+infoName+'",'+lng+','+lat+',document.getElementById("info_mudi'+numID+'").value,1,"startPlace")\'  style="width:45px;height:24px;margin-bottom:-1px;"/>'
    +'</div>'
    	+'<div id="info_L_There'+numID+'" style="DISPLAY: none;" class="h_rscount">'
    	+'出发地：<input type="text" id="info_chufa'+numID+'" onkeyup="strangecode(this.value)" name="chufa{numID}" style="width: 140px;" value="" size="30"'
    	+'onkeydown=\'sendQueryPlacebyEnter("'+infoName+'",'+lng+','+lat+',this.value,1,"endPlace",event)\'/>'
    	+'<input type="button" name="chufaQuary" value="到 达" onclick=\'sendQueryPlaceInfo("'+infoName+'",'+lng+','+lat+',document.getElementById("info_chufa'+numID+'").value,1,"endPlace")\' style="width:45px;height:24px;margin-bottom:-1px;" />'
    	+'</div></div>';
	content+="</div>";
	// GLog.write(content);
    	return content;
}
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
/* 缓存查询 */
var bufferOverlay=null;var bufferArray=null;
function clearBufferResult(){
	if(bufferOverlay){
		mapExtension.removeFromMap(bufferOverlay);
	}
	if(bufferArray){
		for(var i=0;i<bufferArray.length;i++){
			gmap.removeOverlay(bufferArray[i]);
		}
	}
}
function bufferPoint(infoType,buffDistances,lat,lng) {
	clearBufferResult();
	bufferOverlay=null;
	bufferArray=new Array;
	var infoCode=0;
	switch(infoType){
	case "商":
		infoCode=1	
		break;
	case "餐":
		infoCode=3;	
		break;
	case "医院":
		infoCode=0;	
		break;
	case "邮局":
		infoCode=0;
		break;
	case "银行":
		infoCode=0;	
		break;
	}

queryPOI = new esri.arcgis.gmaps.Query();
queryPOI.returnGeometry = true;// false;
queryPOI.where="infotype like '%"+infoType+"%' and rownum<=20";
queryPOI.outFields = ["NAME","ADDRESS","PHONE","SHAPE"];

queryLineInfo = new esri.arcgis.gmaps.Query();
queryLineInfo.returnGeometry = true;// false;
queryLineInfo.where="big_type_id="+infoCode+" and rownum<=10";
queryLineInfo.outFields = ["INFO_NAME","ADDRESS","PHONE","SHAPE"];

	var gsvc = new esri.arcgis.gmaps.Geometry(geoMetryUrl);
    var buffParams = new esri.arcgis.gmaps.BufferParameters();
     buffParams.unit = esri.arcgis.gmaps.SRUnitType.DEGREE;// FOOT;
    buffParams.unionResults = true;// false; // union results. The default is
									// false
    if(buffDistances>500){
    	alert("范围超过500米,将只显示500米范围!");
    	buffDistances=500;
    }
   // esri.arcgis.gmaps.Config.proxyUrl = "./proxy.jsp";
    var point=new GLatLng(lat,lng);
     buffParams.distances = [buffDistances/108000];  // distance in unit type
														// as
      buffParams.geometries = [point];// GLog.write(buffDistances/108000);
      gsvc.buffer(buffParams);
      GEvent.addListener(gsvc, "buffercomplete",bufferComplete);

  }
var bufferListCTL=null,totalNum=0,featureArrList=null,content="";
var bPolygon=null;
function bufferComplete(results){
	//alert(results.geometries[0].length);
      // Construct a 1-dimensional array of polygons to use in the
		// query.queryGeometry.
      var bufferPolys = [];
      for (var x = 0; x < results.geometries.length; x++) {
        for (var y = 0; y < results.geometries[x].length; y++) {
          bufferPolys.push(results.geometries[x][y]);
          //alert(results.geometries[x][y]);
        }
      }
      if(!bufferPolys[0]){
    	  return;
      }
      bPolygon=bufferPolys[0];
      var bound=bufferPolys[0].getBounds();
  	var centerPoint = bound.getCenter();
	var current_level = gmap.getBoundsZoomLevel(bound);
	gmap.setCenter(centerPoint, current_level);
      mapExtension = new esri.arcgis.gmaps.MapExtension(gmap);
      // 在地图上显示bufffer范围
      bufferOverlay=mapExtension.addToMap(results);
      esri.arcgis.gmaps.Config.proxyUrl = "./proxy.jsp";
      
	  var qtaskLineInfo = new esri.arcgis.gmaps.QueryTask(lineUrl);
	  queryLineInfo.queryGeometry = bufferPolys[0];
	  qtaskLineInfo.execute(queryLineInfo,false,queryLineComplete);
      
      GEvent.addListener(qtaskLineInfo, "executecomplete", function(results) {

      });
	  
	  if(!bufferListCTL){
		  bufferListCTL=new bufferRListCtl(gmap);
		  gmap.addControl(bufferListCTL); 
	  }
	  bufferListCTL.setOpacity(80);
	  bufferListCTL.setContent("查询中...");
	  bufferListCTL.showSelf();
	  
	  featureArrList=new Array();
	  content="";
}
function queryLineComplete(fset){
	//alert(fset.features.length);
	// alert(fset);
	if(!fset)
	{
		  var qtaskPOI = new esri.arcgis.gmaps.QueryTask(POIurl);
	      queryPOI.queryGeometry = bPolygon;
	      qtaskPOI.execute(queryPOI,false,queryPOIComplete);
		return;
	}
	//var content="t";
	//alert(fset.features.length)
	for(var i=0;i<fset.features.length;i++){
		featureArrList.push(fset.features[i]);
		/*var geometry = fset.features[i].geometry[0];
		var Name=fset.features[i].attributes.INFO_NAME;
		var Add=fset.features[i].attributes.ADDRESS;
		var Phone=fset.features[i].attributes.PHONE;
		// var ff=makeMarker(geometry.getLatLng(),Name,Add,Phone);
		var ff=makeMarker((i+1),geometry.getLatLng(),Name,Add,Phone);
		// 添加查询结果到地图上
		bufferArray.push(ff);
		gmap.addOverlay(ff);*/
	}
	  var qtaskPOI = new esri.arcgis.gmaps.QueryTask(POIurl);
      queryPOI.queryGeometry = bPolygon;
      qtaskPOI.execute(queryPOI,false,queryPOIComplete);
}
function queryPOIComplete(fset){
	var lengthMax=null;
	if(!fset)
	{
		//alert('featureArrList.length');
		if(featureArrList.length==0){
			content="此区域找不到结果!";
		}else{
			lengthMax=featureArrList.length;
			if(lengthMax>20){
				lengthMax=20;
			}
			for(var i=0;i<lengthMax;i++){
				//alert(i);
				var attributes=featureArrList[i].attributes;
				var geometry=featureArrList[i].geometry[0];
				var lat=geometry.getLatLng().lat();
				var lng=geometry.getLatLng().lng();
				var Add=attributes.ADDRESS;
				var Phone=attributes.PHONE;
				var name=null;				
				var list=null;
				var b=20;
				if(attributes.NAME){
					name=attributes.NAME;
					//alert("OUT");
					// info=POIInfoText((i+1),geometry.getLatLng().lng(),geometry.getLatLng().lat(),name,Add,Phone);
					
					list=". <a href='javascript:void(0);' onclick='showPointInfo("+geometry.getLatLng().lat()
					+","+geometry.getLatLng().lng()+",POIInfoText("+(b+i)+","+lng+","+lat+",\""+name+"\",\""+Add+"\",\""+Phone+"\"))'><b>"+name+"</b></a>";
					
				}else{
					//alert("IN");
					name=attributes.INFO_NAME;
					//alert();
					// info=POIInfoText((i+1),geometry.getLatLng().lng(),geometry.getLatLng().lat(),name,Add,Phone);
					
					list=". <a href='javascript:void(0);' onclick='showPointInfo("+geometry.getLatLng().lat()
					+","+geometry.getLatLng().lng()+",POIInfoText("+(b+i)+","+lng+","+lat+",\""+name+"\",\""+Add+"\",\""+Phone+"\"))'><b>"+name+"</b></a>";
					
				}
				content+=(i+1)+list+"<br/>";
				
				var gg=makeMarker((i+1),geometry.getLatLng(),name,Add,Phone);
				// 添加查询结果到地图上
				gmap.addOverlay(gg);
				bufferArray.push(gg);
			}
		}
		bufferListCTL.setContent(content);
		return;
	}
		for(var i=0;i<fset.features.length;i++){
			featureArrList.push(fset.features[i]);
		}
		if(featureArrList.length==0){
			content="此区域找不到结果!";
		}else{
			lengthMax=featureArrList.length;
			if(lengthMax>20){
				lengthMax=20;
			}
			for(var i=0;i<lengthMax;i++){
				//alert(i);
				var attributes=featureArrList[i].attributes;
				var geometry=featureArrList[i].geometry[0];
				var lat=geometry.getLatLng().lat();
				var lng=geometry.getLatLng().lng();
				var Add=attributes.ADDRESS;
				var Phone=attributes.PHONE;
				var name=null;var list=null;
				var b=20;
				if(attributes.NAME){
					name=attributes.NAME;
					
					// info=POIInfoText((i+1),geometry.getLatLng().lng(),geometry.getLatLng().lat(),name,Add,Phone);
					
					list=". <a href='javascript:void(0);' onclick='showPointInfo("+geometry.getLatLng().lat()
					+","+geometry.getLatLng().lng()+",POIInfoText("+(b+i)+","+lng+","+lat+",\""+name+"\",\""+Add+"\",\""+Phone+"\"))'><b>"+name+"</b></a>";
					
				}else{
					name=attributes.INFO_NAME;
					
					// info=POIInfoText((i+1),geometry.getLatLng().lng(),geometry.getLatLng().lat(),name,Add,Phone);
					
					list=". <a href='javascript:void(0);' onclick='showPointInfo("+geometry.getLatLng().lat()
					+","+geometry.getLatLng().lng()+",POIInfoText("+(b+i)+","+lng+","+lat+",\""+name+"\",\""+Add+"\",\""+Phone+"\"))'><b>"+name+"</b></a>";
					
				}
				content+=(i+1)+list+"<br/>";
				
				var gg=makeMarker((i+1),geometry.getLatLng(),name,Add,Phone);
				// 添加查询结果到地图上
				gmap.addOverlay(gg);
				bufferArray.push(gg);
				
			}
		}
		bufferListCTL.setContent(content);
}
    function makeMarker(numID,point,Name,Add,Phone){
    /*	//GLog.write(numID+"/"+lat+"/"+lng);
 var chartAPI_Opt = {
                              chartStyle : "d_bubble_icon_text_small",
                              icon       : "petrol",
                              textColor  : "000000",
                              bgColor    : "FFFFFF"
                           }; 
        var markerOpt = {
                           draggable  :  false,
                           style      : "chart",
                           chart      : chartAPI_Opt,
                           text       : Name
                        };
        var marker = new PopupMarker(point);
        marker.setText(Name);
        */
    	var letteredIcon = new GIcon(baseIcon);
    	letteredIcon.image = "./images/mark/icon_yellow"+numID+".png" ;
    	// Set up our GMarkerOptions object
    	markerOptions = {
    		icon : letteredIcon,
    		title: "点击展开窗口"
    	};
    	var marker = new GMarker(point, markerOptions);
		GEvent.addListener(marker, "click", function(){
			marker.openInfoWindowHtml(POIInfoText(numID,point.lng(),point.lat(),Name,Add,Phone));
		});
        return marker;
    }
    function showPointInfo(lat,lng,info){
    	var LatLng=new GLatLng(lat,lng);
    	gmap.openInfoWindowHtml(LatLng,info);
    }
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
function bufferByEnter(infoType,buffDistances,lat,lng,event){
	if (event.keyCode == 13) {
		bufferPoint(infoType,buffDistances,lat,lng);
	}
}

