Introduction
In this post I am explain how to load GMap Direction from database in ASP.NET. Here i am writing this article to explain how to load GMap Direction from database in ASP.NET.
Previous post about GMap is
Steps :
Step - 1 : Create New Project.
Go to File > New > Project > Select asp.net web forms application > Entry Application Name > Click OK.Step-2: Add a Database.
Go to Solution Explorer > Right Click on App_Data folder > Add > New item > Select SQL Server Database Under Data > Enter Database name > Add.Step-3: Create table for fetch data.
Open Database > Right Click on Table > Add New Table > Add Columns > Save > Enter table name > Ok.Step-4: Create a Stored Procedure in Sql Server for retrieve Direction.
Open Database > Right Click on Stored Procedure > Add New Stored Procedure > Write below Sql Code > Save. CREATE PROCEDURE dbo.GetDirection
@LocFrom int,
@LocTo int
AS
Select
(Select
LatLong
From
Locations
Where
LocID = @LocFrom) as FromLoc,
(Select
LatLong
from
Locations
Where
LocID = @LocTo) as ToLoc
RETURN
Step-5: Add a Webpage and Design for Show GMap Direction
Go to Solution Explorer > Right Click on Project name form Solution Explorer > Add > New item > Select web form/ web form using master page under Web > Enter page name > Add.HTML Code
<h3>Get GMap direction from database using ASP.NET</h3>
<br />
<table>
<tr>
<td>From : </td>
<td>
<asp:DropDownList ID="ddFrom" runat="server"></asp:DropDownList>
</td>
<td>To : </td>
<td>
<asp:DropDownList ID="ddTo" runat="server"></asp:DropDownList>
</td>
<td>
<input type="button" value="Get Direction" id="btnGetDirection" />
</td>
</tr>
</table>
<br />
<div id="map" style="width:50%; height:300px; border:solid 1px black;float:left"></div>
<div id="route" style="width:30%; height:300px; border:solid 1px black; float:left; overflow:auto"></div>
JS Code
<script src="//maps.google.com/maps?file=api&v=2&sensor=false&key=ABQIAAAAuPsJpk3MBtDpJ4G8cqBnjRRaGTYH6UMl8mADNa0YKuWNNa8VNxQCzVBXTx2DYyXGsTOxpWhvIG7Djw" type="text/javascript"></script>
<script language="javascript">
var Gmap;
var directionPanel;
var direction;
function initialize() {
Gmap = new GMap2(document.getElementById("map"));
Gmap.setCenter(new GLatLng(22.573438, 88.36293), 15); // here I have set kolkata as Center and 15 zoom level
directionPanel = document.getElementById("route");
direction = new GDirections(Gmap, directionPanel);
}
$(document).ready(function () {
initialize();
$('#btnGetDirection').click(function () {
//here populate data from database and get to GMap direction
PopulateDirection();
});
});
function PopulateDirection() {
var from = $('#<%=ddFrom.ClientID%>').val();
var to = $('#<%=ddTo.ClientID%>').val();
$.ajax({
url: "Default.aspx/GetDirectioin",// Here url for code behind function
type: "POST",
data: "{from: '"+from+"', to: '"+to+"'}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
direction.load(data.d.toString());
},
error: function () {
alert("Error!");
}
});
}
</script>
Step-6: Write following code in Page_Load event for load Location.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PopulateLocation();
}
}
Here is the function...
private void PopulateLocation()
{
// Populate location Here
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Con"].ConnectionString))
{
string query = "Select * from Locations";
SqlCommand cmd = new SqlCommand(query, con);
if (con.State != ConnectionState.Open)
{
con.Open();
}
dt.Load(cmd.ExecuteReader());
}
ddFrom.DataSource = dt;
ddFrom.DataTextField = "LocName";
ddFrom.DataValueField = "LocID";
ddFrom.DataBind();
ddTo.DataSource = dt;
ddTo.DataTextField = "LocName";
ddTo.DataValueField = "LocID";
ddTo.DataBind();
}
Step-7: Write this function into your page code behind for called from Jquery Code.
// this is the function is for called from jquery
[WebMethod]
public static string GetDirectioin(string from, string to)
{
string returnVal = "";
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Con"].ConnectionString))
{
SqlCommand cmd = new SqlCommand("GetDirection", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@LocFrom", from);
cmd.Parameters.AddWithValue("@LocTo", to);
if (con.State != ConnectionState.Open)
{
con.Open();
}
dt.Load(cmd.ExecuteReader());
}
returnVal = "from: " + dt.Rows[0]["FromLoc"].ToString() + " to: " + dt.Rows[0]["ToLoc"].ToString();
return returnVal;
}
