[Talk-de] Eigener Overlay: FOSSGIS-Server oder toolserver.org?

Sarah Hoffmann lonvia at denofr.de
Di Jun 1 13:36:24 UTC 2010


On Tue, Jun 01, 2010 at 03:04:25PM +0200, Florian Lohoff wrote:
> On Tue, Jun 01, 2010 at 02:15:20PM +0200, Sarah Hoffmann wrote:
> > Das geht noch einfacher mit den Strategies die OpenLayers mitliefert.
> > Etwa so:
> > 
> > vector = new OpenLayers.Layer.Vector("data", {
> > 		                strategies: [new OpenLayers.Strategy.BBOX({ratio : 1})],
> > 										protocol: new OpenLayers.Protocol.HTTP({
> > 											          url: "http://www.foo.com/bar",
> > 																format: new OpenLayers.Format.GeoJSON()
> > 														})
> > 										});
> > 
> > Das macht dann das Nachladen automatisch, wenn die Karte bewegt oder
> > gezoomt wird.
> 
> Wie machst du das dann an die features noch styles zu haengen? So wuerden
> ja die "rohen" features in die vector layer genagelt ....

Die Styles werden im GeoJOSN mitgeliefert und dann per StyleMap zugewiesen.
Sprich, ein Eintrag in der GeoJOSN-Datei sieht etwa so aus:

{ "type": "Feature",   "geometry": {"type": "Point", "coordinates": [8.545645, 47.4117363]}
	,"properties": {
			"graphic": "circle",
			"name": "Bahnhof Oerlikon 781",
			"color": "#0ff",
			"bgcolor": "#000"}}

Die Style-Map etwa so:

  var stylemap = new OpenLayers.StyleMap(
                     {"default" :   { pointRadius : 3,
                                      fillColor: "${color}",
                                      strokeColor: "${bgcolor}",
                                      graphicName: "${graphic}",
                                      label: "${name}",
                                      strokeWidth: 1
                                  });

Mit $ markierte Variablen werden durch die 'properties' aus dem GeoJOSN
ersetzt.

Dann die Style-Map beim Initialisieren des Vektor-Layers übergeben:

vector = new OpenLayers.Layer.Vector("data", {
                    strategies: [new OpenLayers.Strategy.BBOX({ratio : 1})],
                    protocol: new OpenLayers.Protocol.HTTP({
                                url: "http://www.foo.com/bar",
                                format: new OpenLayers.Format.GeoJSON()
                            }),
                     styleMap: stylemap
                    });

Gruss

Sarah




Mehr Informationen über die Mailingliste Talk-de