Hi all, First off, I'm new to OpenLayers so go gentle if I ask something dumb.
I've been generating a KML document from a php file and opening it with OpenLayers...strange thing is that sometimes the geometry shows up in the right place, and sometimes it shows up at 0,0 degrees. This happens completely at random for any size feature. But what's even stranger is that if I generate a KML doc with more than one feature, the chances of it rendering properly are increased greatly. Here is what the KML document looks like: <?xml version="1.0" encoding="UTF-8" ?> <kml xmlns="http://earth.google.com/kml/2.2"> <Document id="2000 Census Tracts"> <name>2000 Census Tracts</name> <Snippet></Snippet> <Folder id="FeatureLayer0"> <name>2000 Census Tracts</name> <Snippet></Snippet><Placemark> <name>frayser</name> <Snippet></Snippet> <styleUrl>#PolyStyle00</styleUrl> <Polygon> <tessellate>1</tessellate> <extrude>0</extrude> <altitudeMode>clampToGround</altitudeMode> <outerBoundaryIs><LinearRing><coordinates> ((coordinates go here...they are in State-Plane Feet (EPSG:2274) )) </coordinates></LinearRing> </outerBoundaryIs> </Polygon> </Placemark></Folder> <Style id="PolyStyle00"> <LabelStyle> <color>fff333333</color> <scale>0.000000</scale> </LabelStyle> <LineStyle> <color>ffc000000</color> <width>0.400000</width> </LineStyle> <PolyStyle> <color>ffffff000</color> <outline>1</outline> </PolyStyle> </Style> <Style id="Boundary"> <LabelStyle> <color>ff000000</color> <scale>0.000000</scale> </LabelStyle> <LineStyle> <color>ff000000</color> <width>0.400000</width> </LineStyle> <PolyStyle> <color>ff000000</color> <outline>1</outline> </PolyStyle> </Style> </Document> </kml> ... and here's what the map script looks like: map = new OpenLayers.Map('map', { projection: new OpenLayers.Projection("EPSG:900913"), displayProjection: new OpenLayers.Projection("EPSG:4326"), units: "m" }); var osm = new OpenLayers.Layer.TMS( "OpenStreetMap (Mapnik)", "http://tile.openstreetmap.org/", { type: 'png', getURL: osm_getTileURL, displayOutsideMaxExtent: true, attribution: '<a href="http://www.openstreetmap.org/ ">OpenStreetMap</a>', maxResolution: 156543.0339, maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34) } ); map.addLayer(osm); // This works: kmlLayer = new OpenLayers.Layer.GML("KML", "includes/mapfactory.php", { format: OpenLayers.Format.KML, projection: new OpenLayers.Projection("EPSG:2274"), formatOptions: { extractStyles: true, extractAttributes: true } } ); map.addLayer(kmlLayer); map.zoomToExtent(new OpenLayers.Bounds(-90.31272, 34.98697, -89.62608, 35.40779).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"))); // This may or may not work (the get parameter tells the database to retrieve only the feature with that name) kmlLayer = new OpenLayers.Layer.GML("KML", "includes/mapfactory.php?featurename=overtonpark", { format: OpenLayers.Format.KML, projection: new OpenLayers.Projection("EPSG:2274"), formatOptions: { extractStyles: true, extractAttributes: true } } ); ...it gets better: If I tell the init() script to create the kmlLayer but NOT add it to the map, and then create an onclick event on the map's div so that when clicked, the map layer is added, it displays correctly every time. So I'm assuming that map.addLayer() is sometimes called prematurely (the layer may not have been finished constructing / kml document wasn't comlpetely loaded?) Any help would be most appreciated -- Jackson
_______________________________________________ Users mailing list [email protected] http://openlayers.org/mailman/listinfo/users
