Subscribe.
<-- Everybody needs some, how about you!
Download WMV - Video for PC.
Download M4V - Video for iPod.
Download MP3 - Audio only.
Show Notes:
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&v=2.x&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;
}