Подтвердить что ты не робот

Objective-C Библиотека для восхода и захода солнца?

Есть ли библиотека Objective-C (или C) (совместимая с базовым расположением), которая может рассказать мне время восхода и захода солнца за любой данный календарный день?

4b9b3361

Ответ 1

EDSunriseSet является открытым исходным кодом и бесплатной оболочкой Objective-C для подпрограмм языка C, созданных Paul Schlyter.

Вычисление выполняется полностью подпрограммами С-кода. EDSunrisetSet переводит эти вычисления в обычные классы Cocoa (NSDate, NSTimeZone,...)

Ответ 2

Я на самом деле портировал библиотеку KosherJava и планирую скоро сделать ее доступной на GitHub!

Редактировать:

KosherCocoa теперь на GitHub! Если вам не нужен код, связанный с еврейским календарем, вы можете удалить файл "calendar". Файлы классов красиво разделены на папки в зависимости от того, какие вычисления они выполняют.

Изменение: KosherCocoa нас должны заменить современным и более полным обновлением, как только я смогу. Приведенная выше ссылка теперь указывает на устаревшее хранилище.

Ответ 3

Я использовал библиотеку под названием SUNWAIT. Очень простой, эффективный - простой в использовании!

Ответ 4

Попробуйте следующее: https://github.com/mourner/suncalc/

Очень понятный и простой в реализации, хотя он написан javascript, но его легко конвертировать в
objective-C

Он также поддерживает вычисление солнца, положения луны и координат.

Ответ 5

После того, как вы не нашли простую альтернативу Swift, я создал Solar: Быстрое построение микро-библиотеки для Sunrise/Sunset.

Ответ 6

Просто примечание.. если вы используете Беркли один... ну это не работает (в Австралии как минимум). Он действительно включает в себя код Paul Schlyter C, но это здорово.

Если вы хотите, чтобы он работал в любом месте, лучше всего рассчитать даты в UTC.

В SunriseAndSunset.m замените код на двойной рост; двойной набор; следующим образом:

sun_rise_set(theYear, theMonth, theDay, lon, lat, &rise, &set);
int hours = HOURS(rise);
int mins = MINUTES(rise);
int sethrs = HOURS(set);
int setmins = MINUTES(set);

NSTimeInterval riseOffset = ((hours * 60) + mins) * 60;
NSTimeInterval setOffset = ((sethrs * 60) + setmins) * 60;

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSString *dateStr = [NSString stringWithFormat:@"%i-%02d-%02dT00:00:00+0000", theYear, theMonth, theDay];
NSDate *utcMidnight = [formatter dateFromString:dateStr];

NSDate *utcSunrise = [utcMidnight dateByAddingTimeInterval:riseOffset];
NSDate *utcSunset = [utcMidnight dateByAddingTimeInterval:setOffset];

[formatter release];
[gregorian release];

return [NSDictionary dictionaryWithObjectsAndKeys:utcSunrise, @"sunrise", utcSunset, @"sunset", nil];