var map; var bounds; var sflag = true; var points=[]; var pobj =[]; var navA = new Array(0,0,0,0); var navidA = new Array("dcontinent","dcountry","dstate","dcity"); var baseIcon; var icons; var _mouse_marker = null; var pl; function load(oid) { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map")); addBounds(); addControls(); createBaseIcons(); createIcons(); } } function addBounds(){ bounds = new GLatLngBounds(); } function addControls(){ map.setCenter(new GLatLng(30.14512718337613, 106.171875), 1); map.addControl(new GMapTypeControl()); map.addMapType(G_PHYSICAL_MAP); map.addControl(new GLargeMapControl()); } function createBaseIcons(){ baseIcon = new GIcon(); //marker_midblue //marker_midgreen baseIcon.image = "http://www.google.com/mapfiles/marker.png"; baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png"; baseIcon.iconSize = new GSize(20, 34); baseIcon.shadowSize = new GSize(37, 34); baseIcon.iconAnchor = new GPoint(9, 34); baseIcon.infoWindowAnchor = new GPoint(9, 2); baseIcon.infoShadowAnchor = new GPoint(18, 25); } function createIcons() { icons = new GIcon(); icons.image = "widget/images/man.png"; icons.iconSize = new GSize(32,32); icons.iconAnchor = new GPoint(12,32); icons.infoWindowAnchor = new GPoint(5,1); icons.imageMap = [5,0, 1,4, 1,8, 3,12, 5,20, 7,20, 8,12, 11,8, 11,4, 7,0]; } function createBoundary(subtype,type,did,id,name,data,parent,lng,continent,territory,region,place,count,lat) { try { var overlay; var polycenter=""; var random = "003399"; if(subtype=="mysub")random = "00cc33"; else random = "003399"; if(sflag)strokeO = 0.8,fillO = 0.4; else strokeO = 0,fillO = 0; overlay = new GPolygon.fromEncoded({ polylines: [{ color: "#"+random, weight: 2, opacity: 0, points: data.split(":levels:")[0], levels: data.split(":levels:")[1], zoomFactor: 2, numLevels: 18 }], fill: true, color: "#"+random, opacity: fillO, outline: true }); overlay.id=id; overlay.group=parent; polycenter = getPolygonCenter(overlay); //alert(polycenter); GEvent.addListener(overlay, "click", function(pot){ _mouse_clickF = false; $j("#lat").val(pot.y); $j("#lng").val(pot.x); _mouse_clickF = false; addMarker(pot.y,pot.x); }); pobj[did] = new SPolygon(id,type,subtype,name,random,polycenter,overlay,lng,continent,territory,region,place,count,lat); } catch (e){} } function createPolygons(clicktype,val){ var point; var type; addBounds(); map.clearOverlays(); points.clear(); if(clicktype=="click"){ map.setZoom(10); poly_obj = pobj[val]; type = poly_obj.getCuurentType(); overlay = poly_obj.getOverlay(); overlay.setFillStyle({opacity:0.4}); overlay.setStrokeStyle({weight:2,opacity:0.8}); createPoints(overlay); map.addOverlay(overlay); if(type==3)point = new GLatLng(poly_obj.getLat(),poly_obj.getLng()); else point = poly_obj.getPolygonCenter(); addDragableMarker(point); if(type==3){ map.setCenter(point); } else{ map.setZoom(map.getBoundsZoomLevel(bounds)); map.setCenter(bounds.getCenter()); } } //map.openInfoWindowHtml(poly_obj.getPolygonCenter(),getDiv(did)); } function getCountStr(count){ var str,vcount,pcount,icount,acount,poly_obj=""; count = count.split("~"); vcount = count[0]; pcount = count[1]; icount = count[2]; acount = count[3]; str = " -> Videos("+vcount+")"+" Photos("+pcount+")"+" Infos("+icount+")"+" Audios("+acount+")"+"
"; return str; } /* *This fucntion is sued to create Markers on the map */ function createMarker(point,subtype) { bounds.extend(point); if(subtype=="mysub")baseIcon.image = "http://www.google.com/mapfiles/marker_midgreen.png"; else baseIcon.image = "http://www.google.com/mapfiles/marker_midblue.png"; marker = new GMarker(point, { icon:baseIcon }); //markerA[number] = marker; map.addOverlay(marker); } function createPoints(polyline){ count = polyline.getVertexCount(); for(var i=0; i"+item.name+""; }else{ fstr += ""+item.name+""; } fstr += "
"; $j("#mysbs").append(fstr); }); $j("#mysbs a").bind("click",getData).bind("click",setCheck); $j("#mysbs img").bind("click",getData); },"jsonp"); }); function setCheck(){} function getData(imtype){ var root; var type = ""; var did =""; var afid = ""; var atype = ""; var subflag = true; root = this; if(($j(this).attr("href")) || (this.tagName=="IMG")){ did = $j(this).parent().find("a").attr("value"); type = parseInt($j(root).parent().find("a").attr("type"))+1; navA[type-1] = $j(root).parent().find("a").text(); $j("#did").val(did); $j("#dtype").val(type); if(this.tagName!="IMG")getPolygon(this,"click"); if($j(root).parent().find("img").attr("class")=="expand")$j(root).parent().find("img:first").removeClass("expand").addClass("collapse"); else $j(root).parent().find("img:first").removeClass("collapse").addClass("expand"); afid = $j(root).parent().find("a").attr("afid"); atype = $j(root).parent().find("a").attr("aftype"); //alert($j(root).parent().find("a").attr("aftype")) if($j(root).parent().find("div").length==1){ $j(root).parent().find("div").html(" ").addClass("loader"); $j.get("http://www.sitesee.com/getAddSubscriptionList.php",{type:type,id:did,afid:afid,aftype:atype}, function(data){ fstr = ""; $j.each(data, function(i,item){ subflag = parseInt(item.sflag); fstr += "
"; if(type<3)fstr += ""; if(atype=="mysub"){ if(subflag){ fstr += ""+item.name+""; }else{ fstr += ""+item.name+""; } } fstr += "
"; fstr += "
"; }); $j(root).parent().find("div").html("").removeClass("loader"); $j(root).parent().find("div").append(fstr); $j(root).parent().find("div a").bind("click",getData).bind("click",setCheck); $j(root).parent().find("div img").bind("click",getData); },"jsonp"); }else{ $j(root).parent().find("div:first").toggle(); } } } var arr = new Array; var continent = ""; var territory = ""; var region = ""; var place = ""; function getPolygon(proot,clicktype){ var narr = new Array; var typarr = new Array; var val = 0; var subtype = ""; var type; var count; continent = ""; territory = ""; region = ""; place = ""; type = $j(proot).parent().find("a").attr("type"); subtype = "mysub"; val = $j(proot).parent().find("a").attr("value"); count = $j(proot).parent().find("a").attr("count"); if(clicktype=="click"){ if(jQuery.inArray($j(proot).parent().find("a").attr("value"), arr)=="-1"){ narr.push($j(proot).parent().find("a").attr("value")); typarr.push($j(proot).parent().find("a").attr("type")); arr.push($j(proot).parent().find("a").attr("value")); } } if(narr.length){ addPolygon(clicktype,val,typarr,narr); }else{ createPolygons(clicktype,val); } } function addPolygon(clicktype,val,typarr,narr){ $j.get("http://www.sitesee.com/getAddPolygon.php",{"type[]":typarr,"id[]":narr}, function(data){ $j.each(data, function(i,item){ createBoundary("mysub",data[i]['type'],data[i]['did'],data[i]['id'],data[i]["name"],data[i]["data"],data[i]["parent"],data[i]["lng"],continent,territory,region,place,0,data[i]["lat"]); }); createPolygons(clicktype,val); },"jsonp"); } function addDragableMarker(dpoint){ if(_mouse_marker)map.removeOverlay(_mouse_marker); /*var p_obj = pobj[org1]; var dpoint = p_obj.getPolygonCenter();*/ _mouse_marker=new GMarker(dpoint,{icon:icons,draggable:true}); map.addOverlay(_mouse_marker); addDragable(); setLatLng(_mouse_marker); //if(currentType<=2)addDragable(); //else addCityDragable(); } function addDragable(){ GEvent.addListener(_mouse_marker, "dragstart", function() { currentPt=_mouse_marker.getPoint(); }); GEvent.addListener(_mouse_marker, "dragend", function() { if (!inPoly(points,_mouse_marker.getPoint())) { _mouse_marker.setPoint(currentPt); _mouse_marker.setImage("widget/images/man.png"); } else { var pixel=map.fromLatLngToDivPixel(_mouse_marker.getPoint()); //set latitue and longitude setLatLng(_mouse_marker); var x=pixel.x+6; var y=pixel.y+6; if (x > map.getSize().width - 120) { x = map.getSize().width - 120 } if (y > map.getSize().height - 10) { y = map.getSize().height - 10 } var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(x,y)); //pos.apply(mcontext); } }); GEvent.addListener(_mouse_marker, "drag", function() { if (inPoly(points,_mouse_marker.getPoint())) { _mouse_marker.setImage("widget/images/man.png"); //mcontext.style.visibility="hidden"; } else { _mouse_marker.setImage("widget/images/caution.png"); var pixel=map.fromLatLngToDivPixel(_mouse_marker.getPoint()); var x=pixel.x+6; var y=pixel.y+6; if (x > map.getSize().width - 120) { x = map.getSize().width - 120 } if (y > map.getSize().height - 10) { y = map.getSize().height - 10 } var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(x,y)); //pos.apply(mcontext); } }); } function addCityDragable(){ GEvent.addListener(_mouse_marker, "dragstart", function() { currentPt=_mouse_marker.getPoint(); }); GEvent.addListener(_mouse_marker, "dragend", function() { var pixel=map.fromLatLngToDivPixel(_mouse_marker.getPoint()); //set latitue and longitude setLatLng(_mouse_marker); var x=pixel.x+6; var y=pixel.y+6; if (x > map.getSize().width - 120) { x = map.getSize().width - 120 } if (y > map.getSize().height - 10) { y = map.getSize().height - 10 } var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(x,y)); //pos.apply(mcontext); }); GEvent.addListener(_mouse_marker, "drag", function() { _mouse_marker.setImage("widget/images/man.png"); //mcontext.style.visibility="hidden"; }); } function inPoly(poly,pt){ var npoints = poly.length-1; var xnew,ynew,xold,yold,x1,y1,x2,y2,i; var inside=false; if (npoints < 3) { return false; } xold=poly[npoints-1].x; yold=poly[npoints-1].y; for (i=0 ; i < npoints ; i++) { xnew=poly[i].x; ynew=poly[i].y; if (xnew > xold) { x1=xold; x2=xnew; y1=yold; y2=ynew; }else{ x1=xnew; x2=xold; y1=ynew; y2=yold; } if ((xnew < pt.x) == (pt.x <= xold) && ((pt.y-y1)*(x2-x1) < (y2-y1)*(pt.x-x1))) { inside=!inside; } xold=xnew; yold=ynew; }; return inside; } function setLatLng(marker){ document.getElementById("lat").value=_mouse_marker.getPoint().lat(); document.getElementById("lng").value=_mouse_marker.getPoint().lng(); } /** * Array convenience method to clear membership. * * @param object element * @returns void */ Array.prototype.clear = function () { this.length = 0; };