GService.cs
上传用户:cpbs999
上传日期:2022-03-10
资源大小:1805k
文件大小:9k
源码类别:

MySQL数据库

开发平台:

Others

  1. //   Google Maps User Control for ASP.Net version 1.0:
  2. //   ========================
  3. //   Copyright (C) 2008  Shabdar Ghata 
  4. //   Email : ghata2002@gmail.com
  5. //   URL : http://www.shabdar.org
  6. //   This program is free software: you can redistribute it and/or modify
  7. //   it under the terms of the GNU General Public License as published by
  8. //   the Free Software Foundation, either version 3 of the License, or
  9. //   (at your option) any later version.
  10. //   This program is distributed in the hope that it will be useful,
  11. //   but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. //   GNU General Public License for more details.
  14. //   You should have received a copy of the GNU General Public License
  15. //   along with this program.  If not, see <http://www.gnu.org/licenses/>.
  16. //   This program comes with ABSOLUTELY NO WARRANTY.
  17. using System;
  18. using System.Web;
  19. using System.Collections;
  20. using System.Web.Services;
  21. using System.Web.Services.Protocols;
  22. using System.Web.Script.Services;
  23. /// <summary>
  24. /// Summary description for GService
  25. /// </summary>
  26. [WebService(Namespace = "http://tempuri.org/")]
  27. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  28. [ScriptService]
  29. public class GService : System.Web.Services.WebService
  30. {
  31.     public GService()
  32.     {
  33.         //Uncomment the following line if using designed components 
  34.         //InitializeComponent(); 
  35.     }
  36.     //[WebMethod]
  37.     //public string HelloWorld(string YourName) {
  38.     //    return "Hello "+YourName;
  39.     //}
  40.     [WebMethod(EnableSession = true)]
  41.     public void SetLatLon(string pID, double pLatitude, double pLongitude)
  42.     {
  43.         GoogleObject objGoogleNew = (GoogleObject)System.Web.HttpContext.Current.Session["GOOGLE_MAP_OBJECT"];
  44.         GoogleObject objGoogleOld = (GoogleObject)System.Web.HttpContext.Current.Session["GOOGLE_MAP_OBJECT_OLD"];
  45.         objGoogleNew.Points[pID].Latitude = pLatitude;
  46.         objGoogleNew.Points[pID].Longitude = pLongitude;
  47.         objGoogleOld.Points[pID].Latitude = pLatitude;
  48.         objGoogleOld.Points[pID].Longitude = pLongitude;
  49.     }
  50.     //This method will be used once map centering is complete. This will set RecenterMap flag to false. So next time map will not recenter automatically.
  51.     [WebMethod(EnableSession = true)]
  52.     public void RecenterMapComplete()
  53.     {
  54.         GoogleObject objGoogleNew = (GoogleObject)System.Web.HttpContext.Current.Session["GOOGLE_MAP_OBJECT"];
  55.         GoogleObject objGoogleOld = (GoogleObject)System.Web.HttpContext.Current.Session["GOOGLE_MAP_OBJECT_OLD"];
  56.         objGoogleNew.RecenterMap = false;
  57.         objGoogleOld.RecenterMap = false;
  58.     }
  59.     [WebMethod(EnableSession = true)]
  60.     public GoogleObject GetGoogleObject()
  61.     {
  62.         GoogleObject objGoogle = (GoogleObject)System.Web.HttpContext.Current.Session["GOOGLE_MAP_OBJECT"];
  63.         System.Web.HttpContext.Current.Session["GOOGLE_MAP_OBJECT_OLD"] = new GoogleObject(objGoogle);
  64.         return objGoogle;
  65.     }
  66.     [WebMethod(EnableSession = true)]
  67.     public GoogleObject GetOptimizedGoogleObject()
  68.     {
  69.         GoogleObject objGoogleNew = (GoogleObject)System.Web.HttpContext.Current.Session["GOOGLE_MAP_OBJECT"];
  70.         GoogleObject objGoogleOld = (GoogleObject)System.Web.HttpContext.Current.Session["GOOGLE_MAP_OBJECT_OLD"];
  71.         GoogleObject objGoogle = new GoogleObject();
  72.         if (objGoogleOld != null)
  73.         {
  74.             for (int i = 0; i < objGoogleNew.Points.Count; i++)
  75.             {
  76.                 string pointStatus = "";
  77.                 GooglePoint NewPoint = objGoogleNew.Points[i];
  78.                 GooglePoint OldPoint = objGoogleOld.Points[NewPoint.ID];
  79.                 //if old point not found, means this is a new point.
  80.                 if (OldPoint == null)
  81.                 {
  82.                     pointStatus = "N"; //New
  83.                 }
  84.                 else
  85.                 {
  86.                     //If old point found and old not equal to new point, means it's value is changed.
  87.                     if (!OldPoint.Equals(NewPoint))
  88.                     {
  89.                         pointStatus = "C"; //Changed
  90.                     }
  91.                     //Remove found point from old object. This is to reduce iteration in next loop.
  92.                     objGoogleOld.Points.Remove(OldPoint.ID);
  93.                 }
  94.                 if (pointStatus != "")
  95.                 {
  96.                     //If new point is changed, add it in list which is to be sent to client.
  97.                     NewPoint.PointStatus = pointStatus;
  98.                     objGoogle.Points.Add(NewPoint);
  99.                 }
  100.             }
  101.             //Loop through rest of old points to mark them as deleted.
  102.             for (int i = 0; i < objGoogleOld.Points.Count; i++)
  103.             {
  104.                 GooglePoint OldPoint = objGoogleOld.Points[i];
  105.                 OldPoint.PointStatus = "D";
  106.                 objGoogle.Points.Add(OldPoint);
  107.             }
  108.             //********************************************
  109.             for (int i = 0; i < objGoogleNew.Polylines.Count; i++)
  110.             {
  111.                 string lineStatus = "";
  112.                 GooglePolyline NewLine = objGoogleNew.Polylines[i];
  113.                 GooglePolyline OldLine = objGoogleOld.Polylines[NewLine.ID];
  114.                 //if old point not found, means this is a new point.
  115.                 if (OldLine == null)
  116.                 {
  117.                     lineStatus = "N"; //New
  118.                 }
  119.                 else
  120.                 {
  121.                     //If old point found and old not equal to new point, means it's value is changed.
  122.                     if (!OldLine.Equals(NewLine))
  123.                     {
  124.                         lineStatus = "C"; //Changed
  125.                     }
  126.                     //Remove found point from old object. This is to reduce iteration in next loop.
  127.                     objGoogleOld.Polylines.Remove(OldLine.ID);
  128.                 }
  129.                 if (lineStatus != "")
  130.                 {
  131.                     //If new point is changed, add it in list which is to be sent to client.
  132.                     NewLine.LineStatus = lineStatus;
  133.                     objGoogle.Polylines.Add(NewLine);
  134.                 }
  135.             }
  136.             //Loop through rest of old points to mark them as deleted.
  137.             for (int i = 0; i < objGoogleOld.Polylines.Count; i++)
  138.             {
  139.                 GooglePolyline OldPolyline = objGoogleOld.Polylines[i];
  140.                 OldPolyline.LineStatus = "D";
  141.                 objGoogle.Polylines.Add(OldPolyline);
  142.             }
  143.             //********************************************
  144.             for (int i = 0; i < objGoogleNew.Polygons.Count; i++)
  145.             {
  146.                 string gonStatus = "";
  147.                 GooglePolygon NewGon = objGoogleNew.Polygons[i];
  148.                 GooglePolygon OldGon = objGoogleOld.Polygons[NewGon.ID];
  149.                 //if old point not found, means this is a new point.
  150.                 if (OldGon == null)
  151.                 {
  152.                     gonStatus = "N"; //New
  153.                 }
  154.                 else
  155.                 {
  156.                     //If old point found and old not equal to new point, means it's value is changed.
  157.                     if (!OldGon.Equals(NewGon))
  158.                     {
  159.                         gonStatus = "C"; //Changed
  160.                     }
  161.                     //Remove found point from old object. This is to reduce iteration in next loop.
  162.                     objGoogleOld.Polygons.Remove(OldGon.ID);
  163.                 }
  164.                 if (gonStatus != "")
  165.                 {
  166.                     //If new point is changed, add it in list which is to be sent to client.
  167.                     NewGon.Status = gonStatus;
  168.                     objGoogle.Polygons.Add(NewGon);
  169.                 }
  170.             }
  171.             //Loop through rest of old points to mark them as deleted.
  172.             for (int i = 0; i < objGoogleOld.Polygons.Count; i++)
  173.             {
  174.                 GooglePolygon OldPolygon = objGoogleOld.Polygons[i];
  175.                 OldPolygon.Status = "D";
  176.                 objGoogle.Polygons.Add(OldPolygon);
  177.             }
  178.         }
  179.         objGoogle.CenterPoint = objGoogleNew.CenterPoint;
  180.         objGoogle.ZoomLevel = objGoogleNew.ZoomLevel;
  181.         objGoogle.ShowTraffic = objGoogleNew.ShowTraffic;
  182.         objGoogle.RecenterMap = objGoogleNew.RecenterMap;
  183.         objGoogle.MapType = objGoogleNew.MapType;
  184.         objGoogle.AutomaticBoundaryAndZoom = objGoogleNew.AutomaticBoundaryAndZoom;
  185.         //Save new Google object state in session variable.
  186.         //System.Web.HttpContext.Current.Session["GOOGLE_MAP_OBJECT_OLD"] = objGoogleNew;
  187.         System.Web.HttpContext.Current.Session["GOOGLE_MAP_OBJECT_OLD"] = new GoogleObject(objGoogleNew);
  188.         return objGoogle;
  189.     }
  190. }