#1 Tue 13 July 2010 10:02
- manumanu
- Participant occasionnel
- Date d'inscription: 7 May 2010
- Messages: 11
Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Bonjour à tous,
je suis un néo-développeur en train de monter une application carto sur le web en html/JS
je rencontre un problème dans mon code: les données vecteur ne s'affichent pas...j'ai bien mon tableau (gridpanel) dont les en-têtes de colonne s'affichent, mais pas les données...elles ne sont pas non plus placées sur la carte... auriez-vous une solution à ce problème?
merci d'avance, et super site au passage, ça donne envie de continuer à coder!
ci-dessous le code JS:
Code:
Ext.apply(Ext.form.VTypes, { daterange : function(val, field) { var date = field.parseDate(val); if(!date){ return; } if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) { var start = Ext.getCmp(field.startDateField); start.setMaxValue(date); start.validate(); this.dateRangeMax = date; } else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) { var end = Ext.getCmp(field.endDateField); end.setMinValue(date); end.validate(); this.dateRangeMin = date; } /* * Always return true since we're only using this vtype to set the * min/max allowed values (these are tested for after the vtype test) */ return true; } }); // Parmètres d'affichage de la carte // var lon=2 // var lat=47 // var zoom=5 // Une fois le chargement effectué... Ext.onReady(function() { // ----------------------------- OpenLayers ----------------------------------------------- OpenLayers.Lang.code="fr"; // Nouvel objet Map var map = new OpenLayers.Map( 'map', optionsMap ); // Options de la carte var optionsMap = { projection: new OpenLayers.Projection("EPSG:900913"), displayProjection: new OpenLayers.Projection("EPSG:4326"), units: "m", }; // Couche Google Physical var gphy = new OpenLayers.Layer.Google( "Google Physical", {type: G_PHYSICAL_MAP} ); // Couche Google Hybrid var ghyb = new OpenLayers.Layer.Google( "Google Hybrid", {type: G_HYBRID_MAP} ); // Couche Google Satellite var gsat = new OpenLayers.Layer.Google( "Google Satellite", {type: G_SATELLITE_MAP} ); // Couche Google Street var gmap = new OpenLayers.Layer.Google( "Google Streets", {type: G_NORMAL_MAP} ); // Creation d'une couche vecteur var vecLayer = new OpenLayers.Layer.Vector("vector", { projection: new OpenLayers.Projection("EPSG:4326"), displayProjection: new OpenLayers.Projection("EPSG:4326") } ); // Ajout des couches raster à la carte map.addLayers([gsat, gphy, ghyb, gmap, vecLayer]); // ------------------------------------------------------------------------------------------- // Nouvel objet Panel var panel = new OpenLayers.Control.Panel({defaultControl: pan}); // Nouveau control Pan var pan = new OpenLayers.Control.MouseDefaults({title:"Déplacement"}); // Historique de navigation nav = new OpenLayers.Control.NavigationHistory(); map.addControl(nav); // Gestionnaire de couches map.addControl(new OpenLayers.Control.LayerSwitcher()); // Le cadre acceuillant les differents controls panel.addControls([ pan, new OpenLayers.Control.ZoomBox({title:"Zoom +"}), nav.next,nav.previous, new OpenLayers.Control.ScaleLine(), new OpenLayers.Control.Permalink('permalink'), new OpenLayers.Control.MousePosition(), new OpenLayers.Control.Navigation() ]); // Ajout des controls à la carte map.addControl(panel); // --------------------- GeoExt -------------------------------------------------------- var mapUI = new GeoExt.MapPanel({ region : 'center', title: 'A Simple GeoExt Map', center: new OpenLayers.LonLat(2, 47), zoom: 5, map: map }); // Creation du bloc de données pour la "grid" var store = new GeoExt.data.FeatureStore({ layer: vecLayer, fields: [ {name: 'code_capta', type: 'integer'}, {name: 'Departemen', type: 'integer'}, {name: 'Molecule', type: 'string'}, {name: 'Commune', type: 'string'}, {name: 'Point_X', type: 'integer'}, {name: 'Point_Y', type: 'integer'} ], proxy: new GeoExt.data.ProtocolProxy({ protocol: new OpenLayers.Protocol.HTTP({ url: "http://manu.thiebaut4.free.fr/data/captage_wgs84.geojson", format: new OpenLayers.Format.GeoJSON(), }) }), autoLoad: true }); // Création de la "grid" configurée à partir du "store" var gridPanel = new Ext.grid.GridPanel({ store: store, region: 'east', title: 'Observations', width: '30%', split: true, columns: [{ header: "Code", dataIndex: "code_capta", sortable:true }, { header: "Département", dataIndex: "Departemen", sortable:true }, { header: "Molécule Active", dataIndex: "Molecule", sortable:true }, { header: "Commune", dataIndex: "Commune", sortable:true }, { header: "Coordonnée X", dataIndex: "Point_X", sortable:true }, { header: "Coordonnée Y", dataIndex: "Point_Y", sortable:true }], sm: new GeoExt.grid.FeatureSelectionModel() }); // Viewport new Ext.Viewport({ layout: "border", items: [mapUI, gridPanel] }); });
Hors ligne
#2 Tue 13 July 2010 10:51
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Bonjour,
As tu pensé à utiliser Firebug pour voir s'il n'y a pas d'erreur ?
http://georezo.net/wiki/main:logiciels: … rs:firebug
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#3 Tue 13 July 2010 11:31
- manumanu
- Participant occasionnel
- Date d'inscription: 7 May 2010
- Messages: 11
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Merci Yves! je viens de l'installer
par contre la console m'affiche ça:
GET http://manu.thiebaut4.free.fr/data/captage_wgs84.gml 200OK x 379ms OpenLayers.js(ligne 1081)
je ne sais pas ce que ça veut dire, j'imagine bien que l'appel (méthode GET) fonctionne, mais pourquoi alors ne m'affiche-t-il rien?
Dernière modification par manumanu (Tue 13 July 2010 11:53)
Hors ligne
#4 Tue 13 July 2010 14:37
- mdelsinne
- Invité
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Il faut que tu es ça pour ta couche kml ou gml :
var kml= new OpenLayers.Layer.GML(
nom_de_la_couche,
"accès_au_fichier.kml",
options_kml
);
#5 Thu 15 July 2010 12:14
- manumanu
- Participant occasionnel
- Date d'inscription: 7 May 2010
- Messages: 11
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
je reviens à la charge pour ce problème que j'essaie tant bien que mal de résoudre...
le problème de SOP je pense pas, j'ai essayé en mettant la même adresse et ça ne fonctionnait pas non plus...
désormais, en ne conservant que le strict nécessaire, j'arrive au code suivant:
Code:
var mapPanel, store, gridPanel, mainPanel; Ext.onReady(function() { // Couche Google Physical var map = new OpenLayers.Map(); var gphy = new OpenLayers.Layer.Google( "Google Physical", {type: G_PHYSICAL_MAP}, {layers: 'basic'} ); // create vector layer var vecLayer = new OpenLayers.Layer.Vector("vector", "manu.thiebaut4.free.fr/data/captage_wgs84"); map.addLayers([gphy, vecLayer]); // create map panel mapPanel = new GeoExt.MapPanel({ title: "Map", region: "center", height: 400, width: 600, map: map, center: new OpenLayers.LonLat(5, 45), zoom: 6 }); // create feature store, binding it to the vector layer store = new GeoExt.data.FeatureStore({ layer: vecLayer, fields: [ {name: 'code_capta', type: 'string'}, {name: 'Departemen', type: 'float'}, {name: 'Molecule', type: 'float'}, {name: 'Commune', type: 'float'}, {name: 'Point_X', type: 'float'}, {name: 'Point_Y', type: 'float'} ], proxy: new GeoExt.data.ProtocolProxy({ protocol: new OpenLayers.Protocol.HTTP({ url: "http://manu.thiebaut4.free.fr/data/captage_wgs84", format: new OpenLayers.Format.GeoJSON() }) }), autoLoad: true }); // create grid panel configured with feature store gridPanel = new Ext.grid.GridPanel({ title: "Feature Grid", region: "east", store: store, width: 320, columns: [{ header: "Code captage", width: 200, dataIndex: "code_capta" }, { header: "Département", width: 100, dataIndex: "Departemen" }, { header: "Molécule", width: 100, dataIndex: "Molecule" }, { header: "Commune", width: 100, dataIndex: "Commune" }, { header: "Coordonnée X", width: 100, dataIndex: "Point_X" }, { header: "Coordonnée Y", width: 100, dataIndex: "Point_Y" }], sm: new GeoExt.grid.FeatureSelectionModel() }); // create a panel and add the map panel and grid panel // inside it mainPanel = new Ext.Panel({ renderTo: "mainpanel", layout: "border", height: 400, width: 920, items: [mapPanel, gridPanel] }); });
qui m'affiche la page toujours visible à cette adresse: http://sce.alwaysdata.net/
au cas où, la commande qui a généré mon geojson, même si le contenu est correct, p-e un oubli de ma part:
ogr2ogr -f "GeoJSON" captage_wgs84.geojson captage_wgs84.shp
voili-voilou, moi je sèche depuis un moment déjà...
Hors ligne
#6 Thu 15 July 2010 13:15
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Bonjour,
Normal :
Access to restricted URI denied" code: "1012
Il faut mettre tous les scripts, données, code HTML sur le même serveur ou bine mettre en place un proxy pour la couche vecteur.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#7 Thu 15 July 2010 13:17
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
autre info :
Code:
var vecLayer = new OpenLayers.Layer.Vector("vector", "manu.thiebaut4.free.fr/data/captage_wgs84");
je ne sais pas si l'absence du protocole dans l'url peut poser problème.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#8 Mon 16 August 2010 14:35
- manumanu
- Participant occasionnel
- Date d'inscription: 7 May 2010
- Messages: 11
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Bonjour,
j'ai réussi à afficher mes données vecteur, cependant il reste toujours un soucis au niveau du placement de mes points...
selon vous, est-ce que mon paramétrage de map est bon?
voilà les parties concernées, dans mon code:
Code:
var mapPanel, store, gridPanel, viewport; // Initialisation Ext.onReady(function() { // Langue francaise OpenLayers.Lang.code="fr"; // New Map Object var map = new OpenLayers.Map('map', optionsMap); // Map Options var optionsMap = { projection: new OpenLayers.Projection("EPSG:900913"), displayProjection: new OpenLayers.Projection("EPSG:4326"), units: "m", }; // Google Physical Layer var gphy = new OpenLayers.Layer.Google( "Google Physical", {type: G_PHYSICAL_MAP} ); // Google Hybrid Layer var ghyb = new OpenLayers.Layer.Google( "Google Hybrid", {type: G_HYBRID_MAP} ); // Google Satellite Layer var gsat = new OpenLayers.Layer.Google( "Google Satellite", {type: G_SATELLITE_MAP} ); // Google Street Layer var gmap = new OpenLayers.Layer.Google( "Google Streets", {type: G_NORMAL_MAP} ); // WFS Layer layer_captage = new OpenLayers.Layer.WFS( "Captages d'Alimentation en Eau Potable", "/captage/filter/kml/" + critere_selection + "/", { }, { 'projection': new OpenLayers.Projection("EPSG:4326"), 'format': OpenLayers.Format.KML, 'formatOptions': { extractAttributes: true } } ); // Add Layers to Map map.addLayers([gphy, gsat, gmap, ghyb, layer_captage]); map.setBaseLayer(gphy); // Create Map Panel mapPanel = new GeoExt.MapPanel({ title: "Map", region: "center", map: map, center: new OpenLayers.LonLat(2, 47), zoom: 5 }); // Create feature store, binding it to the vector layer store = new GeoExt.data.FeatureStore({ layer: layer_captage, fields: [ {name: 'code_capta', type: 'string'}, {name: 'departemen', type: 'string'}, {name: 'molecule', type: 'string'}, {name: 'commune', type: 'string'} ], proxy: new GeoExt.data.ProtocolProxy({ protocol: new OpenLayers.Protocol.HTTP({ url: "/captage/filter/kml/" + critere_selection + "/", format: new OpenLayers.Format.KML({ }) }) }), autoLoad: true }); });
merci beaucoup pour l'aide apportée!
Hors ligne
#9 Mon 16 August 2010 23:39
- BenoitFr
- Juste Inscrit !
- Lieu: Issy-les-Moulineaux
- Date d'inscription: 24 Mar 2008
- Messages: 6
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
C'est quoi exactement ton problème de placement des points?
Il s'affiche, mais sont décalés par rapport à leur position normale? Ou alors tous placé au point (0'0)? Ou autre chose?
Y a des chances que cela vienne de la définition de la projection de ta couche WFS. La projection GoogleMaps c'est EPSG:4326, mais il y a de forte chance que les coordonnes de tes points ne soient pas dans cette même projection. Donc essaye d'utiliser 'internalprojection' et 'externalprojection'.
Hors ligne
#10 Tue 17 August 2010 09:45
- manumanu
- Participant occasionnel
- Date d'inscription: 7 May 2010
- Messages: 11
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Salut Benoît,
ouais le problème c'est qu'ils s'affichent, mais sont décalés par rapport à leur position normale...
je pensais déjà à la projection de la couche qui devait être différente de celle de la map...
merci pour ton conseil, je suis en train de tester deux trois choses!
*****EDIT*****
juste pour info EPSG:4326 c'est pour les coordonnées en WGS84 et non pas Google Maps (EPSG:900913)
donc normalement je dois déclarer ma map:
projection: new OpenLayers.Projection ('EPSG:900913'),
displayProjection: new OpenLayers.Projection ('EPSG:4326')
et pour mon layer:
projection: new OpenLayers.Projection ('EPSG:4326')
==> sauf que chez moi ça ne marche pas...
Dernière modification par manumanu (Tue 17 August 2010 17:44)
Hors ligne
#11 Wed 18 August 2010 07:07
- BenoitFr
- Juste Inscrit !
- Lieu: Issy-les-Moulineaux
- Date d'inscription: 24 Mar 2008
- Messages: 6
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Ouais c'est vrai 4326 c'est WGS 84 et pas Google.
Je sais qu'on avait aussi eu des problèmes mais je crois qu'on avait contourné le problème en reprojetant les points avec PostGis.
Sinon essaie de t'aider de cet exemple du site d'Openlayers :
http://dev.openlayers.org/releases/Open … ection.htm
Ou sinon essaie de voir sur cette page http://docs.openlayers.org/library/sphe … cator.html
Ca m'a aidé, mais dans mon cas mes points ne venait pas d'un WFS.
J'espère que ces deux liens pourrons t'aider, si tu ne les connaissais pas déjà.
Hors ligne
#12 Thu 19 August 2010 15:19
- manumanu
- Participant occasionnel
- Date d'inscription: 7 May 2010
- Messages: 11
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
au fait, dans ton cas, tes points venaient de quoi si ce n'était pas un wfs?
je crois que je vais me tourner vers la solution proj4JS...
Hors ligne
#13 Thu 19 August 2010 15:27
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Bonjour,
Pour reprojeter des données au sein de la lib OpenLayers tu dois inclure la lib proj4js car ol s'en sert.
Y.
PS : je déplace le fil sur geolibre_web plus à sa place. Merci.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#14 Fri 20 August 2010 06:29
- BenoitFr
- Juste Inscrit !
- Lieu: Issy-les-Moulineaux
- Date d'inscription: 24 Mar 2008
- Messages: 6
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
au fait, dans ton cas, tes points venaient de quoi si ce n'était pas un wfs?
je crois que je vais me tourner vers la solution proj4JS...
Comme mes objets sont des points, peu nombreux, que leurs positions ne changent pas et que leur nombre est fixe, on a décidé de stocker leur coordonnés dans 2 champs de la base de données. Ainsi au chargement de la page, plusieurs requêtes se font sur la BDD et mon code Php retourne une variable GeoJson. Et donc après dans mon application je peux directement accéder à cette variable et représenter mes points sur la carte.
Par contre, ce qui est bizarre c'est que je dois reprojeter mes points, comme toi du WGS84 à Google Mercator, mais je n'ai pas eu besoin de Proj4. J'utilise juste ça :
var format = new OpenLayers.Format.GeoJSON({
'internalProjection': new OpenLayers.Projection("EPSG:900913"),
'externalProjection': new OpenLayers.Projection("EPSG:4326")
});
Mais par contre maintenant je dois également afficher des polygones, donc ca va être par WFS.
Hors ligne
#15 Tue 24 August 2010 18:39
- BenoitFr
- Juste Inscrit !
- Lieu: Issy-les-Moulineaux
- Date d'inscription: 24 Mar 2008
- Messages: 6
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Finalement pour afficher mes polygones je ne passe pas par du WFS. Comme on ne change pas une équipe qui gagne, j'ai stocké mes polys en GéoJson. Mais dans ce cas c'est un fichier .geojson qui sera mis sur le serveur et non plus une variable créée par du code Php.
J'utilise ce code
Code:
vecReg = new OpenLayers.Layer.GML( "Régions", "../fichier/js/reg10.geojson",{ format: OpenLayers.Format.GeoJSON, projection: new OpenLayers.Projection("EPSG:900913") });
Cela ressemble un peu à ton code pour définir ton WFS. Et comme toi au début j'avais mis projection: new OpenLayers.Projection("EPSG:4326") et ca ne marchais pas.
Et quand tu regarde la doc d' openlayers (http://dev.openlayers.org/releases/Open … er-js.html), pour le parametre projection, d'après ce que j'a compris il faut mettre la projection dans laquelle on souhaite afficher la couche.
J'ai donc mis 900913 pour la projection et cela affiche bien mes polys et au bon endroit.
Donc voila je sais pas si tu as déjà essayé cela, remplace donc 4326 par 900913 dans ton paramètre projection de ta définition de ton WFS.
Hors ligne
#16 Wed 25 August 2010 16:49
- manumanu
- Participant occasionnel
- Date d'inscription: 7 May 2010
- Messages: 11
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
bon bah j'ai pas trouvé...je crois que ça va être dur a la soutenance d'expliquer pourquoi mes points apparaissent dans la mer...
j'aimerais bien jeter un oeil sur ton code benoit, du moins pour voir les paramètres de ta carte et si tu gardes aussi le paramètre sphericalMercator: true pour tes couches google...
je laisse mon code, au cas où quelqu'un trouverait une solution...
Code:
var critere_selection = "tout" var layer_captage; Ext.apply(Ext.form.VTypes, { daterange : function(val, field) { var date = field.parseDate(val); if(!date){ return; } if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) { var start = Ext.getCmp(field.startDateField); start.setMaxValue(date); start.validate(); this.dateRangeMax = date; } else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) { var end = Ext.getCmp(field.endDateField); end.setMinValue(date); end.validate(); this.dateRangeMin = date; } /* * Always return true since we're only using this vtype to set the * min/max allowed values (these are tested for after the vtype test) */ return true; } }); var mapPanel, store, gridPanel, viewport; // Initialisation Ext.onReady(function() { // Langue francaise OpenLayers.Lang.code="fr"; // New Map Object var map = new OpenLayers.Map('map', optionsMap); // Map Options var optionsMap = { projection: new OpenLayers.Projection("EPSG:900913"), units: "m", numZoomLevels: 18, maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508.34) }; // Google Physical Layer var gphy = new OpenLayers.Layer.Google( "Google Physical", {type: G_PHYSICAL_MAP} ); // Google Hybrid Layer var ghyb = new OpenLayers.Layer.Google( "Google Hybrid", {type: G_HYBRID_MAP} ); // Google Satellite Layer var gsat = new OpenLayers.Layer.Google( "Google Satellite", {type: G_SATELLITE_MAP} ); // Google Street Layer var gmap = new OpenLayers.Layer.Google( "Google Streets", {type: G_NORMAL_MAP} ); // WFS Layer layer_captage = new OpenLayers.Layer.GML( "Captages d'Alimentation en Eau Potable", "/captage/filter/kml/" + critere_selection + "/", { 'projection': new OpenLayers.Projection("EPSG:4326"), 'format': OpenLayers.Format.KML, 'formatOptions': { extractAttributes: true } } ); // Couche dessin vlayer = new OpenLayers.Layer.Vector("Editable"); // Ajout de la barre d'outil dessin var editable = new OpenLayers.Control.EditingToolbar(vlayer, {div: document.getElementById("editable")}); map.addLayer(vlayer); map.addControl(editable); // Add Layers to Map map.addLayers([gphy, gsat, gmap, ghyb]); map.addLayer(layer_captage); map.setBaseLayer(gphy); // ------------------------------------------------------------------------------------------- // Layer Switcher map.addControl(new OpenLayers.Control.LayerSwitcher()); // New Pan Control var pan = new OpenLayers.Control.MouseDefaults({title:"Déplacement"}); // Historique de navigation var nav = new OpenLayers.Control.NavigationHistory(); map.addControl(nav); // New Panel Objet var panel = new OpenLayers.Control.Panel({defaultControl: pan}); // Panel & Controls panel.addControls([ pan, new OpenLayers.Control.ZoomBox({title:"Zoom +"}), nav.next,nav.previous, new OpenLayers.Control.ScaleLine(), new OpenLayers.Control.Permalink('permalink'), new OpenLayers.Control.MousePosition(), new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar() ]); // Add Panel to Map map.addControl(panel); // ------------------------------------------------------------------------------------------- // Create Map Panel mapPanel = new GeoExt.MapPanel({ title: "Map Panel", region: "center", width: '50%', split: true, map: map, center: new OpenLayers.LonLat(2, 47), zoom: 5 }); // Create feature store, binding it to the vector layer store = new GeoExt.data.FeatureStore({ layer: layer_captage, fields: [ {name: 'code_capta', type: 'string'}, {name: 'departemen', type: 'string'}, {name: 'molecule', type: 'string'}, {name: 'commune', type: 'string'} ], proxy: new GeoExt.data.ProtocolProxy({ protocol: new OpenLayers.Protocol.HTTP({ url: "/captage/filter/kml/" + critere_selection + "/", format: new OpenLayers.Format.KML({ }) }) }), autoLoad: true }); // Create grid panel configured with feature store gridPanel = new Ext.grid.GridPanel({ title: "Feature Grid", region: "east", store: store, width: "40.5%", columns: [{ header: "Code captage", sortable:true, dataIndex: "code_capta", width: 100 }, { header: "Département", sortable:true, dataIndex: "departemen", width: 80 }, { header: "Molécule", sortable:true, dataIndex: "molecule", width: 60 }, { header: "Commune", sortable:true, dataIndex: "commune", width: 150 }], sm: new GeoExt.grid.FeatureSelectionModel() }); // EnTete var header = new Ext.Panel({ frame: true, height: 40, region: 'north', items: [document.getElementById("header")] }); // Le viewport regroupant l'ensemble des objets viewport = new Ext.Viewport({ layout: 'border', height: 400, width: 920, items: [mapPanel, gridPanel, header] }); });
Dernière modification par manumanu (Wed 25 August 2010 16:53)
Hors ligne
#17 Wed 25 August 2010 17:33
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Bonjour,
Dans le mer mais où exactement ? As tu une url public pour visualiser cela ?
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#18 Wed 25 August 2010 18:08
- manumanu
- Participant occasionnel
- Date d'inscription: 7 May 2010
- Messages: 11
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
http://sce.alwaysdata.net/
à l'ouest de l'afrique...
et si j'enlève l'option sphericalMercator:true, mes points s'affichent sur le Nord de la France...
Dernière modification par manumanu (Wed 25 August 2010 18:10)
Hors ligne
#19 Wed 25 August 2010 18:31
- BenoitFr
- Juste Inscrit !
- Lieu: Issy-les-Moulineaux
- Date d'inscription: 24 Mar 2008
- Messages: 6
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Tes points sont affichés aux coordonnés pratiquement (0,0) car il considère tes points comme étant projeté en Google Mercator et donc en mètre. Ainsi si tuas un point en WGS84 qui a pour longitude 5° et pour latitude 45°, il va etre placé à 5 mètre à l'Est et 45 mètre au Nord du point (0,0). Du moins c'est ce que je crois comprendre.
Donc laisse sphericalMercator, mais as tu essayé comme je te l'ai dit de changer 4326 par 900913 dans la definition de la projection de ta couche WFS. Ça donnerais donc cela
Code:
// WFS Layer layer_captage = new OpenLayers.Layer.GML( "Captages d'Alimentation en Eau Potable", "/captage/filter/kml/" + critere_selection + "/", { 'projection': new OpenLayers.Projection("EPSG:900913"), 'format': OpenLayers.Format.KML, 'formatOptions': { extractAttributes: true } } );
Sinon voila une partie de mon code, ce qui concerne la définition de la carte et de mes couches vectorielles. Si tu veux je t'envoye tout mon code par mail.
Code:
// Options de la carte var optionsMap = { //Enlève tout les controles présents par défaut controls:[], projection: new OpenLayers.Projection("EPSG:900913"), //Unité de la carte, le mètre units: 'm', //Définition de l'extent maximal comme étant le Québec maxExtent: bbox, //Empeche le pan en dehors du Québec restrictedExtent: bbox, //Événements liés à la carte eventListeners: { //Au changement de fond cartographique on appele la fonction chgtBase "changebaselayer": chgtBase, //À la fin d'un mouvement de la carte, on appele la fonction finMvtCarte "moveend" : finMvtCarte, //À la fin d'un zoom sur la carte, on appele la fonction finZoomCarte "zoomend" : finZoomCarte } }; //Creation de la couche des regions vecReg = new OpenLayers.Layer.Vector( "Régions",{ //Définition du style de la couche styleMap: new OpenLayers.StyleMap({ //Application du style défini au-dessus 'default': stylereg, //Lors de la sélection juste l'opacité change 'select': {fillOpacity: 0.65} }), //Charge tout les polygones une seul fois au début strategies: [new OpenLayers.Strategy.Fixed()], //Pour allert lire le fichier GeoJSon où sont stockés nos polygones protocol: new OpenLayers.Protocol.HTTP({ url: "../fichier/js/reg10.geojson", format: new OpenLayers.Format.GeoJSON }), //On ne veut pas que cette couche soit affichée dans le sélectionneur de couche displayInLayerSwitcher: false }); //Ajout de la couche des régions à la carte map.addLayer(vecReg); //Creation de la couche des communautés vectors = new OpenLayers.Layer.Vector("Communautés",{ //Application des styles styleMap: new OpenLayers.StyleMap({ 'default': monStyle, //Lors de la sélection juste la couleur change 'select': {fillColor: "rgb(0,250,0)"} }), //On ne veut pas que cette couche soit affichée dans le sélectionneur de couche displayInLayerSwitcher: false }); //Nos points sont stockés dqns une variable GeoJSON, en coordonnées WGS 84 (4326) et seront affichées en cooordonnées GoogleMercator (900913) var format = new OpenLayers.Format.GeoJSON({ 'internalProjection': new OpenLayers.Projection("EPSG:900913"), 'externalProjection': new OpenLayers.Projection("EPSG:4326") }); //Ajout des points présent dans 'communautes' (var GeoJSON) à la nouvelle variable 'features' features = format.read(communautes); //Ajout des elements de 'features' à la couche vectors.addFeatures(features);
Et sinon tu as dans mon précédent message une autre façon que j'avais utilisée pour afficher mes régions.
Dernière modification par BenoitFr (Wed 25 August 2010 20:08)
Hors ligne
#20 Tue 07 June 2011 13:57
- lagnomance
- Juste Inscrit !
- Lieu: Dakar
- Date d'inscription: 20 May 2011
- Messages: 8
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Bonjour benoitFR,
j'ai suivi tes intervention sur le problème de manumanu,je souhaiterais avoir de l'aide.mon soucis est le suivant je suis entrain de mettre en place une carto web avec fond de carte openstreetmap,j'utilise openlayer coté java script,j'ai numérisé des polygones sous arcgis dans un fichier shp et j'ai importé ce fichier dans ma base de données postgis ce que je souhaiterais faire c'est d'afficher mes polygones via openlayer sur openstreetmap.toutes mes données sont dans ma base de données postgis!comment les affichés via openlayers sur openstreetmap?
merci
Tes points sont affichés aux coordonnés pratiquement (0,0) car il considère tes points comme étant projeté en Google Mercator et donc en mètre. Ainsi si tuas un point en WGS84 qui a pour longitude 5° et pour latitude 45°, il va etre placé à 5 mètre à l'Est et 45 mètre au Nord du point (0,0). Du moins c'est ce que je crois comprendre.
Donc laisse sphericalMercator, mais as tu essayé comme je te l'ai dit de changer 4326 par 900913 dans la definition de la projection de ta couche WFS. Ça donnerais donc celaCode:
// WFS Layer layer_captage = new OpenLayers.Layer.GML( "Captages d'Alimentation en Eau Potable", "/captage/filter/kml/" + critere_selection + "/", { 'projection': new OpenLayers.Projection("EPSG:900913"), 'format': OpenLayers.Format.KML, 'formatOptions': { extractAttributes: true } } );Sinon voila une partie de mon code, ce qui concerne la définition de la carte et de mes couches vectorielles. Si tu veux je t'envoye tout mon code par mail.
Code:
// Options de la carte var optionsMap = { //Enlève tout les controles présents par défaut controls:[], projection: new OpenLayers.Projection("EPSG:900913"), //Unité de la carte, le mètre units: 'm', //Définition de l'extent maximal comme étant le Québec maxExtent: bbox, //Empeche le pan en dehors du Québec restrictedExtent: bbox, //Événements liés à la carte eventListeners: { //Au changement de fond cartographique on appele la fonction chgtBase "changebaselayer": chgtBase, //À la fin d'un mouvement de la carte, on appele la fonction finMvtCarte "moveend" : finMvtCarte, //À la fin d'un zoom sur la carte, on appele la fonction finZoomCarte "zoomend" : finZoomCarte } }; //Creation de la couche des regions vecReg = new OpenLayers.Layer.Vector( "Régions",{ //Définition du style de la couche styleMap: new OpenLayers.StyleMap({ //Application du style défini au-dessus 'default': stylereg, //Lors de la sélection juste l'opacité change 'select': {fillOpacity: 0.65} }), //Charge tout les polygones une seul fois au début strategies: [new OpenLayers.Strategy.Fixed()], //Pour allert lire le fichier GeoJSon où sont stockés nos polygones protocol: new OpenLayers.Protocol.HTTP({ url: "../fichier/js/reg10.geojson", format: new OpenLayers.Format.GeoJSON }), //On ne veut pas que cette couche soit affichée dans le sélectionneur de couche displayInLayerSwitcher: false }); //Ajout de la couche des régions à la carte map.addLayer(vecReg); //Creation de la couche des communautés vectors = new OpenLayers.Layer.Vector("Communautés",{ //Application des styles styleMap: new OpenLayers.StyleMap({ 'default': monStyle, //Lors de la sélection juste la couleur change 'select': {fillColor: "rgb(0,250,0)"} }), //On ne veut pas que cette couche soit affichée dans le sélectionneur de couche displayInLayerSwitcher: false }); //Nos points sont stockés dqns une variable GeoJSON, en coordonnées WGS 84 (4326) et seront affichées en cooordonnées GoogleMercator (900913) var format = new OpenLayers.Format.GeoJSON({ 'internalProjection': new OpenLayers.Projection("EPSG:900913"), 'externalProjection': new OpenLayers.Projection("EPSG:4326") }); //Ajout des points présent dans 'communautes' (var GeoJSON) à la nouvelle variable 'features' features = format.read(communautes); //Ajout des elements de 'features' à la couche vectors.addFeatures(features);Et sinon tu as dans mon précédent message une autre façon que j'avais utilisée pour afficher mes régions.
Hors ligne
#21 Tue 07 June 2011 14:04
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Bonjour,
Quelle est la projection de ta couche polygones ?
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#22 Tue 07 June 2011 17:04
- lagnomance
- Juste Inscrit !
- Lieu: Dakar
- Date d'inscription: 20 May 2011
- Messages: 8
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
salut Yves,
la projection de ma couhe est WGS84 EPSG:4326
merci
Hors ligne
#23 Tue 07 June 2011 17:18
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Bonjour,
Il faut que les données soient en 900913, deux solutions : les reprojeter côté serveur ou côté client via OpenLayers.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#24 Tue 07 June 2011 17:43
- lagnomance
- Juste Inscrit !
- Lieu: Dakar
- Date d'inscription: 20 May 2011
- Messages: 8
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
Donc changer la projection de ma couche en 900913 ok et projeté coté client via openlayers+geoext!
mais j'ai importé mes couches sur postgis dans des tables je veux pouvoir accéder a ces données et ensuite les affichés sur openstreetmap en utilisant openlayers+geoext coté javascript!
merci,cordialement!
Hors ligne
#25 Thu 01 December 2011 17:27
- lagnomance
- Juste Inscrit !
- Lieu: Dakar
- Date d'inscription: 20 May 2011
- Messages: 8
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
salut a tous,
SVP j'ai un petit soucis,je voudrais comprendre la fonction de extent: [-59.64701, 19.99951, -31.96942, 41.37974],j'ai mis en place une appli et d'apres tt ce ke j'ai vu je comprends pas le extent pouvez vous m'aider?est ce que c'est l'étendu de la carte?ou la position géographique qui doit être affichée?
Hors ligne
#26 Mon 06 February 2012 17:50
- facteur
- Juste Inscrit !
- Date d'inscription: 6 Feb 2012
- Messages: 1
Re: Pb affichage vecteur [ExtJS/GeoExt/OpenLayers]
slt, comment debuter un application de géolocalisation pour tracker un portable ?
Hors ligne