【发布时间】:2016-02-29 14:08:09
【问题描述】:
我们想在 OpenCPU 应用程序中显示一个 htmlwidget。html 由 Leaflet 生成没有问题,但是我们在 OpenCPU 应用程序中显示它有些麻烦。我们使用以下函数来生成 Leaflet Map:
leafmap1 <- function(ecoregion='10105',wdpa_id='1500'){
require(leaflet)
require(shiny)
require(htmlwidgets)
m <- leaflet() %>%
addTiles() %>% # Add default OpenStreetMap map tiles
addMarkers(lng=174.768, lat=-36.852, popup="The birthplace of R")
m
}
JavaScript如下:
function SochiCtrl($scope){
$scope.ecoregions = ['10105']
$scope.wdpa_ids = ["1500"]
$scope.ecoregion = $scope.ecoregions[0]
$scope.wdpa_id = $scope.wdpa_ids[0]
$scope.makeChart = function(){
var req = ocpu.rpc("leafmap1",
{"ecoregion": $scope.ecoregion, "wdpa_id": $scope.wdpa_id}, function(output){
$('#map').html(output)
}).fail(function(text){
alert("Error: " + req.responseText);
});
}
$scope.$watchCollection('[ecoregion, wdpa_id]', function(newValues){
console.log(newValues)
$scope.makeChart({ecoregion: newValues[0], wdpa_id: newValues[1]})
})
}
现在应用程序显示 Leaflet 框架,但我在从 OpenCPU 获取 json 时遇到了一些问题,我收到以下错误 No method asJSON S3 class: htmlwidget。我也试过:
m <- toJSON(m, force= TRUE)
完整代码见:https://github.com/Arevaju/ocpuleaflet。
非常感谢您的帮助,并祝贺您的出色工作!
【问题讨论】:
-
你能提供一些你想展示的小部件的示例代码吗?
-
没有找到解决办法?
-
是的,看看 Jeroen 的这个 repo:github.com/opencpu/leafletapp。您可以在 OpenCPU 网站上找到该应用程序。我们的工作示例可以在以下位置找到:github.com/javimarlop/spdynmodocpu