Генерация времен восхода и захода солнца из широты и долготы на сегодняшнюю дату - PullRequest
1 голос
/ 14 апреля 2011

Все.Я делаю проект, который использует только JavaScript (на стороне клиента, а не на стороне сервера), и я хочу использовать скрипт из NOAA, который я нашел в другом потоке (я не могу перечислить более одной ссылки в качественовый пользователь), и я нашел это:

http://www.srrb.noaa.gov/highlights/sunrise/sunrise.html

Я пытаюсь сделать так, чтобы, когда пользователь вводит широту и долготу и нажимает кнопку «Отправить», он получаетсегодняшние данные восхода / захода солнца и сохраняйте их в двух переменных (например, восход и закат).

Однако мне бы очень хотелось, чтобы они могли поместить все сценарии (кроме сценариев, встроенных в комбинированный список).коробки) в отдельном файле JavaScript, чтобы я мог предоставить источник кода JavaScript с веб-сайта NOAA в мой проект, над которым я работал.

                <div id="locationSetupDiv">
                    <fieldset>
                        <legend>Location</legend>
                        <p>
                        <a href="javascript:var load = window.open('http://www.esrl.noaa.gov/gmd/grad/solcalc/')">
                            Get your longitude and latitude from here.</a>
                        </p>
                        <table class="inputData">
                            <tr>
                                <th style="width: 75px;">
                                    <label id="labelLongitude" for="inputModuleIDNumber">
                                        Longitude:</label></th>
                                <td><input id="inputLongitude" /></td>
                            </tr>
                            <tr>
                                <th><label id="labelLatitude" for="inputModuleName">
                                    Latitude:</label></th>
                                <td><input id="inputLatitude" /></td>
                            </tr>
                        </table>
                        <input type="button" value="Submit Changes" 
                               style="float: right; margin-top: 1em;" />
                    </fieldset>
                </div>

Приведенный выше код представлен в HTML.Теперь, вот мой код JavaScript:

function PopulateFromXML()
{
    listModules = document.getElementById(
        "listModules").getElementsByTagName("tbody");

    // Gather the text fields for location data.
    inputLongitude = document.getElementById("inputLongitude")
    inputLatitude = document.getElementById("inputLatitude")

    // Firefox's DOM Parser treats whitespaces as text nodes, including
    // line breaks.
    removeWhitespace(xmlDoc.documentElement);

    // Send the document's root element to the XML Object variable.
        xmlObj = xmlDoc.documentElement;

    // Perform the checks and populate the tables
    // and any other elements that are needed.
    if (xmlObj.tagName == "HomeAutomationInterface")
    {
        // Check to be sure the first node is the "Setup" node. It contains the
        // location node.
        if ((xmlObj.childNodes[0].tagName == "Setup") &&
            (xmlObj.childNodes[0].childNodes[0].tagName == "Location"))
        {
            // Copy the data from one of the attributes to the respective text boxes.
            inputLongitude.value = xmlObj.childNodes[0]
                .childNodes[0].getAttribute("longitude");
            inputLatitude.value = xmlObj.childNodes[0]
                .childNodes[0].getAttribute("latitude");
        }
        // The second node within the root element is Modules node.
        // This will be implemented.
        if (xmlObj.childNodes[1].tagName == "Modules")
        {
            ListModulesInTabularData();
       }
        // The third node within the root element is Scenes node.
        // You need modules in order for scenes to work.
        // This will be implemented.
        if (xmlObj.childNodes[2].tagName == "Scenes")
        {
            ListScenesInTabularData();
        }
        // The last element is the Timers node.
        // This will either activate the scene or turn on, off,
        // dim, brighten, or set the light level of the module if
        // it is the light module or turn on or off the appliance
        // module. This will be implemented.
        if (xmlObj.childNodes[3].tagName == "Timers")
        {
            ListTimersInTabularData();
        }
    }
}

Как видите, два текстовых поля внутри набора полей записываются при заполнении из файла XML.Хотя я делаю проект в качестве подтверждения концепции, я не могу найти способ сохранить все данные в файл XML, поэтому мой учитель сказал мне не беспокоиться об этом.Но поскольку я написал код для динамического заполнения всех данных XML в табличном формате, я искал определенный код JavaScript в Интернете или, возможно, файл JavaScript, на который можно ссылаться из моего проекта, но сКод JavaScript, который я позаимствовал у NOAA для своего личного проекта, кто-нибудь знает, как мне получить время восхода / захода солнца в соответствии с широтой, долготой и сегодняшней датой?

Обновление

Похоже, что я нашел что-то в Интернете (я выполнил поиск в Google по адресу: веб-сервис sunrise sunset):

http://www.earthtools.org/webservices.htm

Я выполнил поиск по ключевым словам"JavaScript Sunset Санрайз" (без кавычек), и поиск занял у меня некоторое время, но затем с заменой "JavaScript" на "веб-сервис", я могу найти нужный мне веб-сайт, но на самом деле это не такдумаю, что это будет работать с XMLHttpRequest, когда речь заходит о «той же политике происхождения» в IE8 / 9, которая предполагает предотвращение межсайтовых сценариев.

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011

В принципе, тот же вопрос, javascript для вас. Это связано в принятом ответе:

C # Восход / Закат с широтой / долготой

2 голосов
/ 30 августа 2012

Я создал калькулятор JavaScript для восхода и захода солнца и поместил его на github здесь . Он основан на расчете, опубликованном Национальной лабораторией возобновляемой энергии. Я пытался сделать его достаточно простым в использовании, но вы можете представить улучшения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...