Showing posts with label distance from Latitude and Longitude. Show all posts
Showing posts with label distance from Latitude and Longitude. Show all posts

Friday, October 14, 2011

Webservice to get distance from Latitude and Longitude

 Sample Application for Web Service


Write this code on WebService Page

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]

public class Service : System.Web.Services.WebService
{
    public Service () {

    }
    [WebMethod]
    public double distanceFrom(double lat1, double lng1, double lat2, double lng2)
    {
        double dist;       
        dist= distance(lat1, lng1, lat2, lng2);
        return dist;
    }
    private double distance(double lat1, double lon1, double lat2, double lon2)
    {
        double theta = lon1 - lon2;
        double dist = Math.Sin(deg2rad(lat1)) * Math.Sin(deg2rad(lat2)) + Math.Cos(deg2rad(lat1)) * Math.Cos(deg2rad(lat2)) * Math.Cos(deg2rad(theta));
        dist = Math.Acos(dist);
        dist = rad2deg(dist);
        dist = dist * 60 * 1.1515;
        //For Kilometer
       // dist = dist * 1.609344;
       //For S Miles
       //   dist = dist * 0.8684;
        dist = Math.Round(dist, 2);
        return (dist);
    }
    private double deg2rad(double deg)
    {
        return (deg * Math.PI / 180.0);
    }
    private double rad2deg(double rad)
    {
        return (rad / Math.PI * 180.0);
    }
}

After This Add Web Reference in your site and write code on your aspx.cs page.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ServiceReference1;

public partial class Test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
       
        ServiceReference1.ServiceSoapClient sp=new ServiceSoapClient();
        double lat1=Convert.ToDouble(TextBox1.Text);
        double lat2 = Convert.ToDouble(TextBox3.Text); ;
        double lon1=Convert.ToDouble(TextBox2.Text);
        double lon2 = Convert.ToDouble(TextBox4.Text); ;
        double str = sp.distanceFrom(lat1,lon1,lat2,lon2);
        TextBox5.Text = str.ToString()+' '+"Miles";
    }
}