плитка погоды openweathermap в Листочке в R - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь добавить пользовательские фишки погоды на карту leaflet в приложении Shiny, используя leaflet-openweathermap доступную библиотеку javascript здесь . Я не знаком с javascript, и карта не отображает слои погоды.

Сначала я скачал leaflet-openweathermap.js и поместил его в папку www/js в пути моего приложения. Затем я зарегистрировал плагин:

openWeatherPlugin <- htmlDependency(
  "Leaflet.OpenWeather",
  "1.6.0",
  src = normalizePath(path = getwd()),
  script = "www/js/leaflet.openweathermap.js"
)

Чтобы отобразить слой погоды на листовке, я попробовал вот что:

leaflet() %>% 
  addTiles() %>% 
  registerPlugin(openWeatherPlugin) %>% 
  onRender("
            function(el, x){
            L.OWM.clouds({showLegend: true, opacity: 0.5, appId: 'MY_APP_ID'})
            }
           ")

MY_APP_ID является действительным идентификатором, полученным с openweathermap.org Однако приведенный выше код не генерирует желаемый слой погоды облаков. Я не знаком с javascript и не знаю, что не так с этим кодом. Пожалуйста, оцените некоторую помощь.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Я использую функцию addProviderTiles вместо raw javascript или библиотеки openweather. Для этого мне пришлось добавить apiKey в providerTileOptions для моей учетной записи OpenWeatherMap:

mw = leaflet() %>%
    addProviderTiles(providers$CartoDB.Positron) %>%
    setView(-122.36075812146, 35.6759920119894, zoom = 11) %>% 
    addProviderTiles(providers$OpenWeatherMap.Wind,  
        options=providerTileOptions(apiKey="<myAPIkey>"))              

mw
0 голосов
/ 06 ноября 2018

Что если вы добавите .addTo(this); в вызове onRender, например:

  onRender("function(el, x){
          L.OWM.clouds({showLegend: true, opacity: 0.5, appId: 'MY_APP_ID'}).addTo(this);
        }
       ")

и файл javascript называется leaflet-openweathermap.js и у вас есть leaflet.openweathermap.js или вы изменили на дефис до точки?

Я не получаю облаков с вашим ключом API. Поэтому я не думаю, что идентификатор действителен, так как я получаю это сообщение в консоли.

[HTTP / 1.1 401 Несанкционированные 99мс]

appId - это ваш личный ключ, а не имя.

Работает с рабочим ключом.

enter image description here

...