ASP.NET Podcast Show #111 - ASP.NET AJAX with Virtual Earth

Original url: http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/2008/05/05/asp-net-podcast-show-111-asp-net-ajax-with-virtual-earth.aspx

Subscribe.ASP.NET AJAX with Virtual Earth <-- Everybody needs some, how about you!

Download WMV - Video for PC.

Download M4V - Video for iPod.

Download MP3 - Audio only.

Show Notes:

  • Upcoming events.
  • URLs of importance, so important that your life depends on them.
  • Mapping with Virtual Earth.
  • Web Services.
  • Client Script.

Source Code:

Master Page:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title>ASP.NET Podcast Mapping Page</title>    <asp:ContentPlaceHolder id="head" runat="server">    </asp:ContentPlaceHolder>    <script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=ABQIAAAA_mrKwezGRvHyiI2zD3-QjxQyvuBphQwgXhP_kHK6Ww2QlMKTbxQ3mY6sQnMU6V5PMK8wQzOfhkt_Vw" language="javascript" type="text/javascript"></script>    <script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1"></script> </head><body onunload="GUnload()">    <form id="form1" runat="server">    <asp:ScriptManager ID="sm" runat="server">        <Services>            <asp:ServiceReference Path="~/GetMapData.asmx" />        </Services>    </asp:ScriptManager>    <div>        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">                </asp:ContentPlaceHolder>    </div>    </form></body>

</html>

 

ASP.NET Page:

 <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Live_Default" Title="Virtual Earth Page" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"><div id="MapDiv" style="position:relative; width:450px; height: 350px;" ></div><br /><div id="MapInfo"></div> <script language="javascript" type="text/javascript">var Map;function pageLoad(){    GetMapData.MapData(SetupMap);}   function SetupMap(result){    var Lat = result.Center.Lat;    var Lon = result.Center.Lon;    var ZoomLevel = result.ZoomLevel;    var MapView, TopLeft, BottomRight;    Map = new VEMap('MapDiv');    Map.LoadMap(new VELatLong(Lat, Lon), ZoomLevel ,'h' ,false);    MapView = Map.GetMapView();    TopLeft = MapView.TopLeftLatLong;    BottomRight = MapView.BottomRightLatLong;    //TopleftLatLong and BottomRightLatLong return a VELatLong object.    Map.AttachEvent("onchangeview", MapChangedView);    GetMapData.GetPointData(10, TopLeft.Latitude, TopLeft.Longitude,        BottomRight.Latitude, BottomRight.Longitude, GetDataSuccess);}function GetDataSuccess(result){    var i = 0;    var Lat, Lon;    $get("MapInfo").innerHTML = "";    for(i=0;i<result.length;i++)    {        Lat = result[i].Location.Lat;        Lon = result[i].Location.Lon;        var shape = new VEShape(VEShapeType.Pushpin, new VELatLong(Lat, Lon));        shape.SetTitle("Title: " + i);        shape.SetDescription(result[i].Description);        Map.AddShape(shape);        $get("MapInfo").innerHTML += "Point Location - Lat: " +             result[i].Location.Lat + " Lon: " + result[i].Location.Lon + "<br />";    }}

 

function MapChangedView(e){    Map.DeleteAllShapes();    MapView = Map.GetMapView();    TopLeft = MapView.TopLeftLatLong;    BottomRight = MapView.BottomRightLatLong;    GetMapData.GetPointData(10, TopLeft.Latitude, TopLeft.Longitude,        BottomRight.Latitude, BottomRight.Longitude, GetDataSuccess);}</script></asp:Content>

 

Web Service: 

using System;using System.Collections;using System.Collections.Generic;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;using System.Web.Script.Services; /// <summary>/// Summary description for GetMapData/// </summary>[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][ScriptService]public class GetMapData : System.Web.Services.WebService {     public GetMapData () {         //Uncomment the following line if using designed components         //InitializeComponent();     }     [WebMethod]    [GenerateScriptType(typeof(MapData))]    public MapData MapData()    {        MapData md = new MapData();        LatLon ll = new LatLon();        ll.Lat = 36;        ll.Lon = -84;        md.Center = ll;        md.ZoomLevel = 8;        return (md);    }     [WebMethod]    [GenerateScriptType(typeof(PointData))]    public PointData[] GetPointData(int PointCount,         double ULLat, double ULLon,         double LRLat, double LRLon)    {        int i = 0;        double PTLat, PTLon;        double LatDelta, LonDelta;        Random rd = new Random();        PointData pd;        LatLon ll;        List<PointData> pdl = new List<PointData>();         LatDelta = ULLat - LRLat;        LonDelta = ULLon - LRLon;         for (i = 0; i < PointCount; i++)        {            pd = new PointData();            ll = new LatLon();            ll.Lat = LRLat + LatDelta * rd.NextDouble();            ll.Lon = LRLon + LonDelta * rd.NextDouble();            pd.Location = ll;            pd.Description = "Point number: " + i.ToString();            pdl.Add(pd);        }        return (pdl.ToArray());    }} public class MapData{    public LatLon Center;    public int ZoomLevel;} public class LatLon{    public double Lat;    public double Lon;} public class PointData{    public LatLon Location;    public string Description;}

No Comments