我正在尝试使用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,也不知道这段代码有什么问题。请感谢一些帮助。
答案 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
是您的私钥,而不是名称。
它与工作键配合使用。
答案 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