ASP.NET Podcast Show #111 - ASP.NET AJAX with Virtual Earth - More Wally - Wallace B. McClure
in

MoreWally.com

Giving people what they want, More Wally. This is the technical and personal blog site of
Wallace B. (Wally) McClure.

This Blog

Syndication

News

Please goy buy 3-4 copies of my book on MonoTouch titled "Professional iPhone Programming with MonoTouch for .NET/C# Developers." They make great gifts all year round. Plus, I get about $.20 when you buy a copy.

Technical Sites

More Wally - Wallace B. McClure

This blog will have all kinds of posts about Wally McClure. In it, there will be tons of .NET and computer programming posts as well as Wally's views on life in general. As you might guess, this site and blog help you get More Wally in your life. What more could anyone want? iPhone, Android, MonoTouch, MonoDroid, Mobile, HTML5, .NET, ADO.NET, ASP.NET, AJAX, Atlas, Microsoft AJAX Library, ASP.NET AJAX, and Windows Azure............follow me on twitter at Wally

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;}

Comments

No Comments
2006 - Wallace B. McClure
Powered by Community Server (Non-Commercial Edition), by Telligent Systems