2014-05-10 3 views
0

Lorsque j'essaie d'ajouter plus d'un polygone à une carte de dépliant avec rCharts en utilisant la fonction map$geoJson(), seul le dernier polygone apparaît sur la carte. Les autres ne sont pas affichés. Une idée sur ce que je peux faire pour ajouter plus d'un polygone à ma carte? Ci-dessous vous pouvez voir une description détaillée de ce que j'ai fait:Ajouter plusieurs polygones à la carte de dépliant rCharts

1. J'interroge une base de données postgis pour obtenir mes polygones et par conséquent j'obtiens le code d'un seul polygone comme un GeoJSON qui ressemble approximativement à ceci:

"{\"type\":\"Polygon\",\"coordinates\":[[[16.644953973395001,48.142664957703971], ...[16.644439684506018,48.143173899704649],[16.644953973395001,48.142664957703971]]]}" 

en somme j'ai 81 polygones et je veux les afficher sur une carte de brochure. J'utilise le paquet rCharts à cette fin.

2. À l'étape suivante, je les convertis avec le paquet RJSONIO en utilisant la fonction fromJSON. Ensuite, le code d'un polygone unique ressemble à peu près comme ceci:

$type 
[1] "Polygon" 

$coordinates 
$coordinates[[1]] 
$coordinates[[1]][[1]] 
[1] 16.66885 48.42283 

$coordinates[[1]][[2]] 
[1] 16.66196 48.42634 

$coordinates[[1]][[3]] 
[1] 16.65877 48.42876 

. 
. 
. 

$coordinates[[1]][[62]] 
[1] 16.67115 48.42179 

$coordinates[[1]][[63]] 
[1] 16.66885 48.42283 

3. Comme la dernière étape je créer une carte de brochure et ajouter les polygones avec la fonction map$geoJson:

map <- Leaflet$new() 
map$tileLayer(provider = 'Stamen.TonerLite') 

map$setView(c(48.42283, 16.66885), zoom = 10) 
map$enablePopover(TRUE) 
map$geoJson(polygon1) 
map$geoJson(polygon2) 
map$geoJson(polygon3) 
map$geoJson(polygon4) 
map$fullScreen(TRUE) 
map$set(width = 800, height = 600) 
map 

Avec cette méthode, seul le dernier polygone (polygone4) est affiché sur la carte, les autres n'apparaissent pas. Des suggestions sur la façon de les faire apparaître?

Répondre

1

Vous devez construire un objet unique geoJSON avec tous vos polygones et ajoutez-le. Voir ici:

https://github.com/ramnathv/rCharts/blob/master/inst/libraries/leaflet/examples/example10.R

Notez le JSON est un FeatureCollection avec des caractéristiques polygonales de type géométrie. Construis cette chaîne à partir des coordonnées de ton polygone et ajoute.

+1

Cette approche est recommandée. Je crois que LeafletJS permet d'ajouter des géométries simples une à la fois, mais je n'ai pas exposé cela dans la liaison rCharts. Donc 'geoJSON' est le chemin à parcourir. – Ramnath

+0

Plusieurs couches geoJSON dans rCharts seraient pratiques, mais il faut finalement en finir avec la balle et se rendre compte que l'on peut aussi bien écrire le JS soi-même. – Spacedman

+0

C'est vrai. Il doit y avoir un équilibre. – Ramnath

Questions connexes