Javascript Latitude to Date function



I am writing a timeline that uses Google Maps. I have a function that
converts a date time to latitude coords. This function is used to draw

the markers on the timeline. I need a reverse function to convert a
latitude coord back to an accurate date time. Then I could detect the
day/hour in the viewport when the timeline is zoomed in or out, or if
it is moved. I cannot use the javascript date functions because this
timeline will eventually be used for BC and AD years.


The map is accurate until zoom level 6
http://www.wwcompclub.org/worldwar/wiki/map.php?year=1865


Also, the add event and edit event forms don't work, so don't bother
trying.


Days[][] is an array of each month containing the number of days in
each month.
So
Days[1].length = 31;
And
Days[1][30] = "31st";


HourConst = 0.00035673379898071291666666666666667;
byear = 1808;
ayear = 1922;


function isLeapYear(year) { //this function seems to work OK
yr = parseInt(year);
if (yr % 4 != 0) return false;
else if (yr % 400 == 0) return true;
else if (yr % 100 == 0) return false;
else return false;



}


function GetLat (syear,smonth,sday,shour) { //this function works great


if (isLeapYear(syear)) {
LeapYear = HourConst*24;
} else {
LeapYear = 0;
}


MonthCalc = 0;


for (i = 0; i < smonth; i++) {
if (isLeapYear(syear) && i == 1) {
DayVar = 29;
} else if (i == 1) {
DayVar = 28;
} else {
DayVar = Days[i].length;
}
MonthCalc += DayVar;
}


monthFactor = (HourConst*24)*MonthCalc;


RelYear = syear - byear;
TLlat =
((RelYear*((HourConst*8760)+LeapYear))+(monthFactor)+(sday*(24*HourConst))+­(shour*HourConst))-180;

return TLlat;



}


//this is the function I am currently using, but it is inaccurate by a
few days due to leap
//years and due to the differant number of days in each month

function GetDate(lat) { //this function should be a reverse of the
"GetLat" function


RelLat = parseFloat(lat) + 180; //add 180 degress so we are not
dividing negitive numbers


YRem = RelLat%(HourConst*8760);
Year = parseInt((RelLat/(HourConst*8760))+byear);


MRem = YRem%(HourConst*672); //(min 28 days)
Month = parseInt(YRem/(HourConst*672));


DRem = MRem%(HourConst*24);
Day = parseInt(MRem/(HourConst*24));
Hour = parseInt(DRem/HourConst);


if (Year < byear) {
Year = byear;
Month = 1;
Day = 1;
Hour = 1;
}
if (Year > ayear) {
Year = ayear;
Month = 1;
Day = 1;
Hour = 1;
}
this.Years = Year;
this.Months = Month;
this.Days = Day;
this.Hours = Hour;
}

.



Relevant Pages

  • Re: Complicated Date to Lat Reverse function
    ... >I am writing a timeline that uses Google Maps. ... >converts a date time to latitude coords. ... Before writing in a language, ...
    (comp.lang.javascript)
  • Complicated Date to Lat Reverse function
    ... I am writing a timeline that uses Google Maps. ... converts a date time to latitude coords. ... RelYear = syear - byear; ...
    (comp.lang.javascript)
  • Re: Complicated Date to Lat Reverse function
    ... >I am writing a timeline that uses Google Maps. ... >converts a date time to latitude coords. ... Calculate the position of an instrument that logs light or dark with a ... This is a real project that we did some years ago for an instrument ...
    (comp.lang.javascript)