Wir möchten ein htmlwidget in einer OpenCPU-Anwendung anzeigen. Das HTML wird von Leaflet ohne Probleme generiert, aber wir haben einige Probleme, es in der OpenCPU-App anzuzeigen. Wir nutzten die folgende Funktion, um die Broschüre Karte zu generieren:Wie HTML-Widgets in OpenCPU-Anwendungen angezeigt werden?
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
}
Das JavaScript ist wie folgt:
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]})
})
}
Nun ist die App zeigt die Broschüre Rahmen, aber ich habe einige Probleme, die json von OpenCPU bekomme ich bekam der folgende Fehler Keine Methode asJSON S3-Klasse: htmlwidget. Ich habe auch versucht mit:
m <- toJSON(m, force= TRUE)
aber es scheint nicht zu funktionieren.
Der vollständige Code ist verfügbar unter: https://github.com/Arevaju/ocpuleaflet.
Vielen Dank für Ihre Hilfe und herzlichen Glückwunsch für Ihre großartige Arbeit !!
Können Sie einige Beispiel-Code eines Widgets sind Sie anzeigen möchten? – Jeroen
Keine Lösung gefunden? – YCR
Ja, werfen Sie einen Blick auf dieses Repo von Jeroen: https://github.com/opencpu/leafletapp. Sie finden die App auf der OpenCPU-Website. Unser Arbeitsbeispiel finden Sie unter: https://github.com/javimarlop/spdynmodocpu – arevaju