In this article, I am explaining how to use Google Map API with ASP.Net. First you need to register with the Google Maps API here and get your key from Google.

Once you get the key. You can display Google Maps on you Website using the following script that you get from Google.

<head id="Head1" runat="server">

    <title>Google Maps Example</title>

     <script type="text/javascript"

        src="http://www.google.com/jsapi?key=xxxxxxx"></script>

     <script type="text/javascript">

      google.load("maps", "2");

      // Call this function when the page has been loaded

      function initialize() {

        var map = new google.maps.Map2(document.getElementById("map"));

        map.setCenter(new google.maps.LatLng("<%=lat%>", "<%=lon%>"), 5);

        var point = new GPoint("<%=lon%>", "<%=lat%>");

        var marker = new GMarker(point);

        map.addOverlay(marker);

        map.addControl(new GLargeMapControl());

      }

      google.setOnLoadCallback(initialize);

    </script>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <div id="map" style="width: 400px; height: 400px"></div>

    </div>

    </form>

</body>

 

As you can see I have placed the script in the Head section of the HTML page. The above script gives your location on the map based on latitude and longitude. The map is loaded in the div with id map

Now to get Latitude and Longitude we will take help of my previous article Find Visitor's Geographic Location using IP Address in ASP.Net. You’ll notice I have used to server variables lat (latitude) and lon (longitude) whose values come from server.

Based on the IP address the web service returns the latitude and longitude refer the XML below

  <?xml version="1.0" encoding="UTF-8" ?>

  <Response>

    <Status>true</Status>

    <Ip>122.169.8.137</Ip>

    <CountryCode>IN</CountryCode>

    <CountryName>India</CountryName>

    <RegionCode>16</RegionCode>

    <RegionName>Maharashtra</RegionName>

    <City>Bombay</City>

    <ZipCode />

    <Latitude>18.975</Latitude>

    <Longitude>72.8258</Longitude>

  </Response>



C#

 

protected string lat, lon;

protected void Page_Load(object sender, EventArgs e)

{

    string ipaddress;

    ipaddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

    if (ipaddress == "" || ipaddress == null)

        ipaddress = Request.ServerVariables["REMOTE_ADDR"];

    DataTable dt = GetLocation(ipaddress);

    if (dt != null)

    {

        if (dt.Rows.Count > 0)

        {

            lat = dt.Rows[0]["Latitude"].ToString();

            lon = dt.Rows[0]["Longitude"].ToString(); 

        }

    }

}

 

private DataTable GetLocation(string ipaddress)

{

    //Create a WebRequest

    WebRequest rssReq = WebRequest.Create("http://freegeoip.appspot.com/xml/"

        + ipaddress);

 

    //Create a Proxy

    WebProxy px = new WebProxy("http://freegeoip.appspot.com/xml/"

        + ipaddress, true);

 

    //Assign the proxy to the WebRequest

    rssReq.Proxy = px;

 

    //Set the timeout in Seconds for the WebRequest

    rssReq.Timeout = 2000;

    try

    {

        //Get the WebResponse

        WebResponse rep = rssReq.GetResponse();

 

        //Read the Response in a XMLTextReader

        XmlTextReader xtr = new XmlTextReader(rep.GetResponseStream());

 

        //Create a new DataSet

        DataSet ds = new DataSet();

 

        //Read the Response into the DataSet

        ds.ReadXml(xtr);

        return ds.Tables[0];

    }

    catch

    {

        return null;

    }

}



VB.Net

Protected lat As String, lon As String

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)  Handles Me.Load

        Dim ipaddress As String

        ipaddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

        If ipaddress = "" OrElse ipaddress Is Nothing Then

            ipaddress = Request.ServerVariables("REMOTE_ADDR")

        End If

        Dim dt As DataTable = GetLocation(ipaddress)

        If dt IsNot Nothing Then

            If dt.Rows.Count > 0 Then

                lat = dt.Rows(0)("Latitude").ToString()

                lon = dt.Rows(0)("Longitude").ToString()

            End If

        End If

End Sub

 

Private Function GetLocation(ByVal ipaddress As String) As DataTable

        'Create a WebRequest

        Dim rssReq As WebRequest = WebRequest. _

           Create("http://freegeoip.appspot.com/xml/" & ipaddress)

 

        'Create a Proxy

        Dim px As New WebProxy("http://freegeoip.appspot.com/xml/" _

        & ipaddress, True)

 

        'Assign the proxy to the WebRequest

        rssReq.Proxy = px

 

        'Set the timeout in Seconds for the WebRequest

        rssReq.Timeout = 2000

        Try

            'Get the WebResponse

            Dim rep As WebResponse = rssReq.GetResponse()

 

            'Read the Response in a XMLTextReader

            Dim xtr As New XmlTextReader(rep.GetResponseStream())

 

            'Create a new DataSet

            Dim ds As New DataSet()

 

            'Read the Response into the DataSet

            ds.ReadXml(xtr)

            Return ds.Tables(0)

        Catch

            Return Nothing

        End Try

End Function

 

As you can see in the above code snippet I get the latitude and longitude from the XML Response in the variables lat and lon which I’ll used to pass values to the JavaScript function of the Google API.

This completes the article. Download the sample source from the link below.

  Download Code (4.26 kb)