Bonjour, il y a des jours que je ne réussi pas à afficher une couche vecteur avec openlayers avec la fonction "OpenLayers.Layer.Vector", à noté que j'ai affiché ma couche en tant que WMS sans probleme.
la couche est définie dans postgis par une table "etages" et qui comprend 3 colonnes (code_gouv (id), lib_gouv et the_geom) et elle est en projection 4326.
Voici le script php que j'ai créé pour charger la couche et la renvoyer en format GeoJSON:
code php:
lorsque j'accède à "http://127.0.0.1/MonTP/Appli_stage/gouv.php" j'obtient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php $dbconn = pg_connect("host=localhost dbname=Achref_INS user=postgres password=XXXX1"); $requete = "SELECT code_gouv, lib_g_fr, ST_ASGeoJSON(the_geom) FROM gouvernorat ORDER BY code_gouv ASC"; $result = pg_query($dbconn,$requete); while ($row = pg_fetch_assoc($result)) { $type = '"type": "Feature"'; $geometry = '"the_geom": ' ; $properties = '"properties": ' . json_encode($row); $feature[] = '{' . $type . ', ' . $the_geom . ', ' . $properties . '}'; } $header = '{"type": "FeatureCollection", "features": ['; $footer = ']}'; echo $header . implode(', ', $feature) . $footer; ?>
Code:
je définie la couche vecteur dans mon code javascript comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {"type": "FeatureCollection", "features": [{"type": "Feature", , "properties": {"code_gouv":"11","lib_g_fr":"Tunis","st_asgeojson":"{\"type\":\"MultiPolygon\",\"coordinates\":[[[[10.313770493916175,36.915829230855941],[10.313823952358479,36.915857495115802],[10.313902912520515,36.91580033291892],[10.313941498104763,36.915798226150699],[10.313979374100594,36.915796694042825],[10.314017253024016,36.915795715706039],[10.314055136438146,36.915795586491157],[10.314093022781758,36.915796011047377],[10.314130912153329,36.915797007834072],[10.314168806018751,36.915798853742722],[10.314206702816374,36.915801253422408],[10.314244602644692,36.915804225332593],[10.314282482517024,36.915807769551691],[10.314320389777127,36.915812144354845],[10.31435760888178,36.915816798391603],[10.314395523675282,36.915822594547329],[10.314432727229619,36.915828651556126],[10.314469244291887,36.915835301609938],[10.314506478372333,36.915842779893666],[10.314542979791915,36.915850814460931],[10.314579507237347,36.915859421180919], ..................................etc
Code:
Je note que j'utilise google street comme fond pour mon application
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 var gouv = new OpenLayers.Layer.Vector("vector",{ strategies: [new OpenLayers.Strategy.Fixed()], protocol: new OpenLayers.Protocol.HTTP({ url: "gouv.php", format: new OpenLayers.Format.GeoJSON(), internalProjection: new OpenLayers.Projection("EPSG:900913"), externalProjection: new OpenLayers.Projection("EPSG:4326") }) });
Résultat :
je trouve le nom de la couche dans le layer switcher mais rien ne s'affiche sur le fond google
quelqu'un pourrais m'aidez svp![]()
Partager