Click here to Skip to main content
15,887,240 members
Please Sign up or sign in to vote.
2.00/5 (2 votes)
code:
C#
protected void Page_Load(object sender, EventArgs e)
    {
        string markers = GetMarkers();
        Literal1.Text = @"
     <script type='text/javascript'>
     function initialize() {
 
     var mapOptions = {
     center: new google.maps.LatLng(28.3213, 77.5435),
     zoom: 2,
     mapTypeId: google.maps.MapTypeId.ROADMAP
     };
 
     var myMap = new google.maps.Map(document.getElementById('mapArea'),
     mapOptions);"
        + markers +
        @"}
     </script>";
    }


C#
 public double ConvertDegree(string input)
   {
       double sd = 0.0;
       double min = 0.0;
       double sec = 0.0;
       double deg = 0.0;

       string direction = input.Substring(0, 1);  // Error: Index and length must refer to a location within the string.Parameter name: length
       string sign = "";
       if ((direction.ToUpper() == "S") || (direction.ToUpper() == "W"))
       {
           sign = "-";
       }

       string[] arr = input.Split(new char[] { ' ' });
       min = Convert.ToDouble(arr[2]);
       string[] arr1 = arr[3].Split(new char[] { '.' });
       sec = Convert.ToDouble(arr1[0]);
       deg = Convert.ToDouble(arr[1]);
       min = min / ((double)60);
       sec = sec / ((double)3600);
       sd = deg + min + sec;
       if (!(string.IsNullOrEmpty(sign)))
       {
           sd = sd * (-1);
       }
       sd = Math.Round(sd, 6);
       string sdnew = Convert.ToString(sd);
       string sdnew1 = "";
       sdnew1 = string.Format("{0:0.000000}", sd);

       double manu = Convert.ToDouble(sdnew1.ToString());
       return manu;
   }

   protected string GetMarkers()
   {
       string markers = "";
       using (SqlConnection con = new
       SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["HostelConnectionString"].ConnectionString))
       {
           SqlCommand cmd = new SqlCommand("select hi.Hostelcd, hi.Lattitude,hi.Longitude,h.HostelName from HostelDetails h left outer join Hostelinformation hi on h.Hostelcd = hi.Hostelcd order by hi.Hostelcd desc", con);
           con.Open();
           SqlDataReader reader = cmd.ExecuteReader();
           int i = 0;

           while (reader.Read())
           {
               i++;


               markers +=
               @"var marker" + i.ToString() + @" = new google.maps.Marker({
             position: new google.maps.LatLng(" + ConvertDegree(reader["Lattitude"].ToString()) + ", " +
               ConvertDegree(reader["Longitude"].ToString()) + ")," +
               @"map: myMap,
             title:'" + reader["HostelName"].ToString() + "'});";
           }
       }
       return markers;
   }


In my database lattitude and longitude are stored as Eg: N 16 53 55 E 77 14 27

Pls give the solution for this runtime error.
Posted
Updated 5-Dec-14 22:01pm
v2
Comments
Philippe Mori 6-Dec-14 9:14am    
Uses a debugger. If you tell the debugger to stop on exceptions, it will stop exactly where the error occurs and you will be able to examine variables to determine which one does not contains the expected value.

Anyway, the message is quite clear. You are trying to access a location outside the current string data. In that case, it means that the string is empty.

You have to either validate data before calling the function or inside the function. If the validation is done Inside the function, then you have to decide how you handle or report the problem.

Use..

i think your parameter value for input gets null or empty string..
try this..
C#
if(String.IsNullOrEmpty(input))
{
input="hello";
}
string direction = input.Substring(0, 1);
 
Share this answer
 
Check your data.
Since the error is occurring on a substring command which tried to extract a single character starting at the beginning of the string, it would appear that at least one of the values returned from your DB is an empty string: "" or a NULL in your DB column, either in the Longitude or Latitude - we can't tell which.

But why are you storing this as string data anyway? To do anything useful with it you need it as a double - so why not convert it to that when you do the data entry, and then just read it out? Saves a lot of time and effort when you actually need it...
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900