zoukankan      html  css  js  c++  java
  • google地图 GoogleMapForASPNet.ascx

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="GoogleMapForASPNet.ascx.cs" Inherits="GoogleMapForASPNet" %>
    <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        Namespace="System.Web.UI" TagPrefix="asp" %>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
     <Services>
        <asp:ServiceReference Path="~/GService.asmx" />
        <asp:ServiceReference Path="~/GoogleMapForASPNet.ascx" />
      </Services>
    </asp:ScriptManager>
    <div id="GoogleMap_Div" style="<%=GoogleMapObject.Width %>;height:<%=GoogleMapObject.Height %>;">
    
    </div>
    <div id="directions_canvas">
    
    </div>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:HiddenField ID="hidEventName" runat="server" />
        <asp:HiddenField ID="hidEventValue" runat="server" />
    </ContentTemplate>
    </asp:UpdatePanel>
    
    <script src="http://maps.google.com/maps?file=api&v=<%=GoogleMapObject.APIVersion %>&key=ABQIAAAAfqVyKlfXjoXu6CA7msi1KRT2yXp_ZAY8_ufC3CFXhHIE1NvwkxQuvdbgukTIg5TF72llfT7Ht23-9A"  type="text/javascript"></script>
    <script language="JavaScript">
    
        //RaiseEvent('MovePushpin','pushpin2');
    function RaiseEvent(pEventName,pEventValue)
    {
        document.getElementById('<%=hidEventName.ClientID %>').value = pEventName;
        alert(hidEnentName.ClientID);
        document.getElementById('<%=hidEventValue.ClientID %>').value = pEventValue;
        alert(hidEventValue.ClientID);
        __doPostBack('UpdatePanel1','');
    }
    
    var map;
    var trafficInfo = null;
    
    //function fListeners()
    //{
    //    this.listeners = new Array();
    //    this.getLength = function() { return this.listeners.length; };
    //    this.pushValue = function(v) { this.listeners.push(v); }
    //    this.getValue = function(i)  { return this.listeners[i]; }
    //}
    function fMarkers()
    {
        this.markers = new Array();
        this.getLength = function() { return this.markers.length; };
        this.pushValue = function(v) { this.markers.push(v); }
        this.getValue = function(i)  { return this.markers[i]; }
        this.getLastValue = function()  { return this.markers[this.markers.length-1]; }
        this.getValueById = function(ID)  {
                                            var i;
                                            for(i=0;i<this.markers.length;i++)
                                            {
                                                if(this.markers[i].value==ID)
                                                {
                                                   // alert('marker found : '+this.markers[i].value);
                                                    return this.markers[i];
                                                }
                                            } 
                                            return null; 
                                          }
        this.removeValueById = function(ID)  {
                                            var i;
                                            for(i=0;i<this.markers.length;i++)
                                            {
                                                if(this.markers[i].value==ID)
                                                {
                                                   // alert('marker found : '+this.markers[i].value);
                                                    this.markers.splice(i,1);
                                                    //alert('changed marker removed');
    
                                                }
                                            } 
                                            return null; 
                                          }
    }
    
    function fPolylines()
    {
        this.polylines = new Array();
        this.polylinesID = new Array();
        this.getLength = function() { return this.polylines.length; };
        this.pushValue = function(v,ID) {  this.polylines.push(v); this.polylinesID.push(ID); }
        this.getValue = function(i)  { return this.polylines[i]; }
        this.getLastValue = function()  { return this.polylines[this.polylines.length-1]; }
        this.getValueById = function(ID)  {
                                            var i;
                                            for(i=0;i<this.polylinesID.length;i++)
                                            {
                                                if(this.polylinesID[i]==ID)
                                                {
                                                   // alert('polyline found : '+this.polylines[i].value);
                                                    return this.polylines[i];
                                                }
                                            }
                                            return null;
                                          }
      this.removeValueById = function(ID) {
                                            var i;
                                            for(i=0;i<this.polylinesID.length;i++)
                                            {
                                                if(this.polylinesID[i]==ID)
                                                {
                                                    this.polylines.splice(i,1);
                                                    this.polylinesID.splice(i,1);
                                                }
                                            }
                                            return null;
                                          }
    }
    
    function fPolygons()
    {
        this.polygons = new Array();
        this.polygonsID = new Array();
        this.getLength = function() { return this.polygons.length; };
        this.pushValue = function(v,ID) {  this.polygons.push(v); this.polygonsID.push(ID); }
        this.getValue = function(i)  { return this.polygons[i]; }
        this.getLastValue = function()  { return this.polygons[this.polygons.length-1]; }
        this.getValueById = function(ID)  {
                                            var i;
                                            for(i=0;i<this.polygonsID.length;i++)
                                            {
                                                if(this.polygonsID[i]==ID)
                                                {
                                                    return this.polygons[i];
                                                }
                                            } 
                                            return null;
                                          }
        this.removeValueById = function(ID)  {
                                            var i;
                                            for(i=0;i<this.polygonsID.length;i++)
                                            {
                                                if(this.polygonsID[i]==ID)
                                                {
                                                    this.polygons.splice(i,1);
                                                    this.polygonsID.splice(i,1);
                                                }
                                            } 
                                            return null; 
                                          }
    }
    
    if (GBrowserIsCompatible())
    {
    //debugger;
    //GoogleMapForASPNet.OnSecondChange("Ghata");
        map = new GMap2(document.getElementById("GoogleMap_Div"));
        map.addControl(new GOverviewMapControl());          //添加鹰眼控件
        map.enableGoogleBar();                              //显示google搜索框
        // 比例尺控件
        var scaleControl = new GScaleControl(); 
    
    
    var markers = new fMarkers();
    var polylines = new fPolylines();
    var polygons = new fPolygons();
    //var myEventListeners = new fListeners();
                    
    function CreateMarker(point,icon1,InfoHTML,bDraggable,sTitle)
    {
        var marker;
    //    if(icon!=null)
    //    {
            marker = new GMarker(point,{icon:icon1,draggable:bDraggable,title: sTitle});
    //    }
    //    else
    //    {
    //        marker = new GMarker(point);
    //    }
        if(InfoHTML!='')
        {
           // vlisteners.pushValue(GEvent.addListener(marker, "click", function() { map.openInfoWindowHtml(point,InfoHTML); }));
            GEvent.addListener(marker, "click", function() { map.openInfoWindowHtml(point,InfoHTML); });
            GEvent.addListener(marker, "dragend", function() {  GService.SetLatLon(this.value,this.getLatLng().y,this.getLatLng().x);RaiseEvent('PushpinMoved',this.value);  });
        }
        return marker;
    }
    
    function CreatePolyline(points,color,width,isgeodesic)
    {
        var polyline;
        if(!isgeodesic)
        {
            polyline = new GPolyline(points,color,width);
        }
        else
        {
            var polyOptions = {geodesic:true};
            polyline = new GPolyline(points,color,width,1,polyOptions);
        }
        return polyline;
    }
    
    function CreatePolygon(points,strokecolor,strokeweight,strokeopacity,fillcolor,fillopacity)
    {
        var polygon;
        
        var polygon = new GPolygon(points,strokecolor,strokeweight,strokeopacity,fillcolor,fillopacity);
        return polygon;
    }
    
    function fGetGoogleObject(result, userContext)
    {
        map.setCenter(new GLatLng(result.CenterPoint.Latitude, result.CenterPoint.Longitude), result.ZoomLevel);
        
        if(result.ShowMapTypesControl)
        {
            map.addControl(new GMapTypeControl());
        }
    
        if(result.ShowZoomControl)
        {
            map.addControl(new GLargeMapControl());
        }
        
        var i;
        if(markers!=null)
        {
            for(i=0;i<markers.getLength();i++)
            {
                var cmark = markers.getValue(i);
                if(cmark !=null)
                {
                        map.removeOverlay(cmark);
                }
            }
        }
    //    if(myEventListeners!=null)
    //    {
    //        for(i=0;i<myEventListeners.getLength();i++)
    //        {
    //            var lisnr = myEventListeners.getValue(i);
    //            if(lisnr!=null)
    //            {
    //                GEvent.removeListener(lisnr);
    //            }
    //        }
    //    }  
        markers = new fMarkers();
    //    myEventListeners = new fListeners();
    
        for(i=0;i<result.Points.length;i++)
        {
            var myIcon_google;
    
            var myPoint = new GLatLng(result.Points[i].Latitude, result.Points[i].Longitude);
            
            myIcon_google = null;
            if(result.Points[i].IconImage!='')
            {
                myIcon_google = new GIcon(G_DEFAULT_ICON);
                markerOptions = { icon:myIcon_google };
    
                myIcon_google.iconSize = new GSize(result.Points[i].IconImageWidth,result.Points[i].IconImageHeight);
                myIcon_google.image = result.Points[i].IconImage;
            }
           
            var marker = CreateMarker(myPoint,myIcon_google,result.Points[i].InfoHTML,result.Points[i].Draggable,result.Points[i].ToolTip);
            marker.value = result.Points[i].ID;
            markers.pushValue(marker);
            map.addOverlay(markers.getLastValue());
        }
        //Add polylines
       // alert('adding polyline');
    
        polylines = new fPolylines();
        for(i=0;i<result.Polylines.length;i++)
        {
    	 var polypoints = new Array();
    	 var j;
    	 for(j=0;j<result.Polylines[i].Points.length;j++)
     	 {
    	 	polypoints.push(new GLatLng(result.Polylines[i].Points[j].Latitude, result.Polylines[i].Points[j].Longitude));
    	 }
            var polyline = CreatePolyline(polypoints,result.Polylines[i].ColorCode,result.Polylines[i].Width,result.Polylines[i].Geodesic);
            polylines.pushValue(polyline,result.Polylines[i].ID);
            map.addOverlay(polylines.getLastValue());
        }
    // var polypoints = new Array();
    // polypoints.push(new GLatLng(43.65669, -79.44268));
    // polypoints.push(new GLatLng(43.66619, -79.44268));
    // var poly = CreatePolyline(polypoints,"#66FF00",10,true);
    // map.addOverlay(poly);
    
    // var polypoints = new Array();
    // polypoints.push(new GLatLng(43.65669, -79.44268));
    // polypoints.push(new GLatLng(43.66619, -79.44268));
    // polypoints.push(new GLatLng(43.67619, -79.44268));
    // var directions = new GDirections(map,document.getElementById("directions_canvas")); 
    //Clear the mapa nd directions of any old information
    //directions.clear();
    
    //Load the map and directions from the specified waypoints
    //directions.loadFromWaypoints(polypoints);
    
    
        polygons = new fPolygons();
        for(i=0;i<result.Polygons.length;i++)
        {
    	 var polypoints = new Array();
    	 var j;
    	 for(j=0;j<result.Polygons[i].Points.length;j++)
     	 {
    	 	polypoints.push(new GLatLng(result.Polygons[i].Points[j].Latitude, result.Polygons[i].Points[j].Longitude));
    	 }
            var polygon = CreatePolygon(polypoints,result.Polygons[i].StrokeColor,result.Polygons[i].StrokeWeight,result.Polygons[i].StrokeOpacity,result.Polygons[i].FillColor,result.Polygons[i].FillOpacity);
            polygons.pushValue(polygon,result.Polygons[i].ID);
            map.addOverlay(polygons.getLastValue());
        }
    
        
        if(result.ShowTraffic)
        {
            trafficInfo = new GTrafficOverlay();
            map.addOverlay(trafficInfo);
        }
    }
     GService.GetGoogleObject(fGetGoogleObject);
     
    function fGetGoogleObjectOptimized(result, userContext)
    {
        if(result.RecenterMap)
        {
            map.setCenter(new GLatLng(result.CenterPoint.Latitude, result.CenterPoint.Longitude), result.ZoomLevel);
            GService.RecenterMapComplete();
        }
    
        if(result.ShowTraffic)
        {
            trafficInfo = new GTrafficOverlay();
            map.addOverlay(trafficInfo);
        }
        else
        {
            if(trafficInfo!=null)
            {
                map.removeOverlay(trafficInfo);
                trafficInfo = null;
            }
        }
    
        var i;
        for(i=0;i<result.Points.length;i++)
        {
            //Create icon
            var myIcon_google;
    
            var myPoint = new GLatLng(result.Points[i].Latitude, result.Points[i].Longitude);
            
            myIcon_google = null;
            if(result.Points[i].IconImage!='')
            {
                myIcon_google = new GIcon(G_DEFAULT_ICON);
                markerOptions = { icon:myIcon_google };
    
                myIcon_google.iconSize = new GSize(result.Points[i].IconImageWidth,result.Points[i].IconImageHeight);
                myIcon_google.image = result.Points[i].IconImage;
            }
            //Existing marker, but changed.
            if(result.Points[i].PointStatus=='C')
            {
                var marker = markers.getValueById(result.Points[i].ID);
                if(marker!=null)
                {
                    markers.removeValueById(result.Points[i].ID);
                    map.removeOverlay(marker);
                }
                var marker = CreateMarker(myPoint,myIcon_google,result.Points[i].InfoHTML,result.Points[i].Draggable,result.Points[i].ToolTip);
                marker.value = result.Points[i].ID;
                markers.pushValue(marker);
                map.addOverlay(markers.getLastValue());
            }
            //New Marker
            if(result.Points[i].PointStatus=='N')
            {
                var marker = CreateMarker(myPoint,myIcon_google,result.Points[i].InfoHTML,result.Points[i].Draggable,result.Points[i].ToolTip);
                marker.value = result.Points[i].ID;
                markers.pushValue(marker);
                map.addOverlay(markers.getLastValue());
            }
            //Existing marker, but deleted.
            if(result.Points[i].PointStatus=='D')
            {
                var marker = markers.getValueById(result.Points[i].ID);
                if(marker!=null)
                {
                    markers.removeValueById(result.Points[i].ID);
                    map.removeOverlay(marker);
                }
            }
        }
        
        //Get Polylines
        for(i=0;i<result.Polylines.length;i++)
        {
            //Existing marker, but changed.
            
            if(result.Polylines[i].LineStatus=='C')
            {
            
                var polyline = polylines.getValueById(result.Polylines[i].ID);
                if(polyline!=null)
                {
                    polylines.removeValueById(result.Polylines[i].ID);
                    map.removeOverlay(polyline);
                }
    	        var polypoints = new Array();
    	        var j;
    	        for(j=0;j<result.Polylines[i].Points.length;j++)
     	        {
    	 	        polypoints.push(new GLatLng(result.Polylines[i].Points[j].Latitude, result.Polylines[i].Points[j].Longitude));
    	        }
                var polyline = CreatePolyline(polypoints,result.Polylines[i].ColorCode,result.Polylines[i].Width,result.Polylines[i].Geodesic);
                polylines.pushValue(polyline,result.Polylines[i].ID);
                map.addOverlay(polylines.getLastValue());
            }
            //New Marker
    
            if(result.Polylines[i].LineStatus=='N')
            {
    	        var polypoints = new Array();
    	        var j;
    	        for(j=0;j<result.Polylines[i].Points.length;j++)
     	        {
    	 	        polypoints.push(new GLatLng(result.Polylines[i].Points[j].Latitude, result.Polylines[i].Points[j].Longitude));
    	        }
                var polyline = CreatePolyline(polypoints,result.Polylines[i].ColorCode,result.Polylines[i].Width,result.Polylines[i].Geodesic);
                polylines.pushValue(polyline,result.Polylines[i].ID);
                map.addOverlay(polylines.getLastValue());
            }
            //Existing marker, but deleted.
            if(result.Polylines[i].LineStatus=='D')
            {
                var polyline = polylines.getValueById(result.Polylines[i].ID);
                if(polyline!=null)
                {
                    polylines.removeValueById(result.Polylines[i].ID);
                    map.removeOverlay(polyline);
                }
            }
        }
        
            //Get Polygons
        for(i=0;i<result.Polygons.length;i++)
        {
            //Existing marker, but changed.
    
            if(result.Polygons[i].Status=='C')
            {
            
                var polygon = polygons.getValueById(result.Polygons[i].ID);
                if(polygon!=null)
                {
                    polygons.removeValueById(result.Polygons[i].ID);
                    map.removeOverlay(polygon);
                }
    	        var polypoints = new Array();
    	        var j;
    	        for(j=0;j<result.Polygons[i].Points.length;j++)
     	        {
    	 	        polypoints.push(new GLatLng(result.Polygons[i].Points[j].Latitude, result.Polygons[i].Points[j].Longitude));
    	        }
                var polygon = CreatePolygon(polypoints,result.Polygons[i].StrokeColor,result.Polygons[i].StrokeWeight,result.Polygons[i].StrokeOpacity,result.Polygons[i].FillColor,result.Polygons[i].FillOpacity);
                polygons.pushValue(polygon,result.Polygons[i].ID);
                map.addOverlay(polygons.getLastValue());
            }
            //New Marker
    
            if(result.Polygons[i].Status=='N')
            {
    	        var polypoints = new Array();
    	        var j;
    	        for(j=0;j<result.Polygons[i].Points.length;j++)
     	        {
    	 	        polypoints.push(new GLatLng(result.Polygons[i].Points[j].Latitude, result.Polygons[i].Points[j].Longitude));
    	        }
                var polygon = CreatePolygon(polypoints,result.Polygons[i].StrokeColor,result.Polygons[i].StrokeWeight,result.Polygons[i].StrokeOpacity,result.Polygons[i].FillColor,result.Polygons[i].FillOpacity);
                polygons.pushValue(polygon,result.Polygons[i].ID);
                map.addOverlay(polygons.getLastValue());
            }
            //Existing marker, but deleted.
            if(result.Polygons[i].Status=='D')
            {
                var polygon = polygons.getValueById(result.Polygons[i].ID);
                if(polygon!=null)
                {
                    polygons.removeValueById(result.Polygons[i].ID);
                    map.removeOverlay(polygon);
                }
            }
        }
    }
    
    }
    function endRequestHandler(sender, args)
        {
        //alert('hi');
            GService.GetOptimizedGoogleObject(fGetGoogleObjectOptimized);
        }
       function pageLoad()
        {
            if(!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack())
                Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
        }    
    </script>
    
  • 相关阅读:
    curl命令详解
    Linux 下 set env export declare浅浅 set和shopt命令详解--(shell定制) (转载)
    ps aux指令詳解
    smb设置参考手册 --详细参数
    Ajax
    JSON浅谈
    Date类型
    笔记本电脑不能上网的问题
    editplus 初步设置
    w10 系统升级
  • 原文地址:https://www.cnblogs.com/lelese7en/p/2074145.html
Copyright © 2011-2022 走看看