Отображение математики и JavaScript

После обширного исследования и забавы, узнающей о API отображения Google, я создаю цифровое приложение карты антенны. На данном этапе следующий шаг в плане проекта должен создать репликацию карты распределения памяти карты Google, которая определяет местоположение станций цифрового телевидения, основанных на входе от адреса пользователя. Так, я использую этот математический код для формулировки переноса центра карты Google и точки lat/lng от набора результатов базы данных.

Мой вопрос: Как я могу завершить математику для показа переноса в градусах?

этот код является математикой, которая возвращает следующий набор результатов массива:

1.21  
1.10  
1.10  
1.10  
1.10  
2.62  
-0.29  
-1.17  
0.12  
3.04  

var y = Math.sin(longitude-center.lng()) * Math.cos(latitude);
var x = Math.cos(center.lat())*Math.sin(latitude) - Math.sin(center.lat())*Math.cos(latitude)*Math.cos(longitude-center.lng());
var bearing = (Math.atan2(y, x)).toFixed(2);

Там кажется чему-то отсутствующему в моих вычислениях. Таблица базы данных содержит значения долготы как отрицательное число для представления верхнего западного квадранта земного шара.

Любые предложения для завершения моей математики сохранили бы миллион nuerons, я уже записал триллион.

Получая степень к предложению радиана, я изменил код JavaScript:

 var radLat1 = center.lat() * Math.PI / 180;
 var radLat2 = latitude * Math.PI / 180;
 var radLng1 = center.lng() * Math.PI / 180;
 var radLng2 = longitude * Math.PI / 180;

 var y = Math.sin(radLng2- radLng1) * Math.cos(radLng2);
 var x = Math.cos(radLat1)*Math.sin(radLat2) -        Math.sin(radLat1)*Math.cos(radLat2)*Math.cos(radLng2-radLng1);
 var bearing = (Math.atan2(y, x)).toFixed(2);

URL к тестированию стройплощадки:щелкните здесь

отделение внизу страницы является набором результатов, возвращенным из 2 массивов, первое содержание расстояние и второе содержание перенос измерения.

5
задан j0k 9 September 2013 в 11:18
поделиться

2 ответа

Карты Google возвращают координаты в градусах. Конечно, триггерные функции ожидают радиан. Так что сначала вы захотите преобразовать в радиан:

function deg_to_rad(degrees) {
    return degrees * Math.PI / 180;
}

Ваша математика выглядит так, как будто она пытается сделать формулу Хаверсина . Я нашел реализацию JavaScript здесь , чтобы вы проверили ваш код на соответствие.

Вы можете проверить ваши результаты по инженерным картам DTV FCC.

.
6
ответ дан 13 December 2019 в 22:09
поделиться

С помощью Сета, и используя мой ранний утренний мозг (да, я среднего возраста и я умнее по утрам).

Ссылка на здесь , которую я изучал, и на которую ссылался Сет, является ключом. Я использовал код из js-файла в записи блога и морфировал код из концепции oo javascript в скрипт, работающий inline.

это мое решение:

var lat1 = center.lat();
var lon1 = center.lng();
var lat2 = latitude;
var lon2 = longitude;

lat1 = lat1 * Math.PI / 180;
lat2 = lat2 * Math.PI / 180;
var dLon = (lon2-lon1) * Math.PI / 180;
var y = Math.sin(dLon) * Math.cos(lat2);
var x = Math.cos(lat1)*Math.sin(lat2) - Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);

var bearing = Math.atan2(y, x) * 180 / Math.PI;
    if (bearing < 0){
           bearing = bearing + 360;
    }

    bearing = bearing.toFixed(0);

stationDistance.push(distance.toFixed(1));
stationBearing.push(bearing);

я запускаю демо-карту Google здесь.

Спасибо за помощь и теперь я могу перейти к логическому коду, который порекомендует подходящий продукт для клиента моего клиента по адресу this url.

stackoverflow ROCKS....

Robert

.
4
ответ дан 13 December 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: