R 中 Leaflet 中的 openweathermap 天气图块

openweathermap weather tile in Leaflet in R

我正在尝试使用 leaflet-openweathermap javascript 可用库 here 在 Shiny 应用程序中的 leaflet 地图上添加自定义天气图块。我不熟悉 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 并且不知道这段代码有什么问题。感谢您的帮助。

如果在 onRender 调用中添加 .addTo(this); 会怎样,例如:

  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 Unauthorized 99ms]

appId 是你的私钥,不是名字。

它使用有效密钥。

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

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

mw