R的Leaflet中的openweathermap天气图

时间:2018-11-04 01:54:45

标签: javascript r openweathermap htmlwidgets r-leaflet

我正在尝试使用leaflet可用的here javascript库在Shiny应用程序中的leaflet-openweathermap地图上添加自定义气象图。我不熟悉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获得的有效ID。 但是,以上代码无法生成所需的云天气层。我不熟悉javascript,也不知道这段代码有什么问题。请感谢一些帮助。

2 个答案:

答案 0 :(得分:1)

如果您在.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密钥无法获得任何云。因此,我认为该ID是无效的,因为我在控制台中收到了此味精。

  

[HTTP / 1.1 401未经授权的99ms]

appId是您的私钥,而不是名称。

它与工作键配合使用。

enter image description here

答案 1 :(得分:1)

我使用的是addProviderTiles函数,而不是原始的javascript或openweather库。为此,我必须在apiKey内为我的OpenWeatherMap帐户添加providerTileOptions

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

mw