Thanks for the thorough and very quick response! > 1. You're probably violating the same origin policy. > > http://faq.openlayers.org/proxyhost/all/ > > (Unless your HTML page is hosted on cbsnews.com, which is possible, > but seems unlikely.) I am indeed using a proxy. I set the ProxyHost variable right after I create the Map object: OpenLayers.ProxyHost = "proxy?url=";
> 2. You're attempting to load a NetworkLink. OpenLayers 2.7 does not > support NetworkLinks, which was recently fixed in SVN. You can set > your KML file to maxDepth: 2 or some such, and it will parse the > networklink in the file you have but... So you're saying that 2.7 *does* support NetworkLinks--you just have to set the matchDepth property? > Quite simply, the CBS news feed doesn't contain any locations, only > addresses, so you need a full gazetteer for it to work. Calling this KML > at all is simply more evidence that the KML spec is hopelessly > overbroad, and since not even Google will read it, I have no qualms > saying that OpenLayers won't. Yeah, that feed was kind of odd. I found another one with actual coordinates[1]. Like the CBSNews feed, it has a NetworkLink tag, which links to another KML file with the actual map data. It works fine if I plug it into Google Maps (it displays a number of points and vectors in central Africa). However, I can't get it to work in OpenLayers. Maybe it has something to do with it not using the proxy to load the NetworkLink URL? If so, how can I get it to do this? I have the maxDepth of the KML layer set to 3. [1] http://www.janegoodall.org/news/gombe-blog/feed/gcb-feed.kml -Mike Christopher Schmidt wrote: > On Mon, Dec 29, 2008 at 12:06:38PM -0500, Michael Angstadt wrote: > >> Good afternoon, >> >> I'm having trouble getting certain KML and GML feeds to load in >> OpenLayers and I wonder if someone can help. The issue appears in >> versions 2.6 and 2.7 of OpenLayers. >> >> Let me start with KML feeds. The feed taken from the "KML Layer >> Example" on the examples section of the OpenLayers website[1] works just >> fine. This feed draws a number of weird shapes in Arizona. However, I >> cannot get another feed, taken from CBSNews' website, to work[2]. One >> of my co-workers was able to view this in Google Earth just fine (see >> attached screenshot). Is this feed only compatible with Google Earth? >> I searched the bug tracking system and found a ticket that might be >> relevant[3]. The ticket states that "the current KML class is a Format >> & hence can only deal in Feature.Vector objects". This seems to explain >> why the feed which displays vectors[1] works and the feed which displays >> points[2] does not. >> > > Points are vectors; images are not. The problems you're running into are > probably three-fold: > > 1. You're probably violating the same origin policy. > > http://faq.openlayers.org/proxyhost/all/ > > (Unless your HTML page is hosted on cbsnews.com, which is possible, > but seems unlikely.) > > 2. You're attempting to load a NetworkLink. OpenLayers 2.7 does not > support NetworkLinks, which was recently fixed in SVN. You can set > your KML file to maxDepth: 2 or some such, and it will parse the > networklink in the file you have but... > > 3. It appears that the linked file actually doesn't contain any > geographic information. Instead, it contains just addresses... > which, I guess, Google Earth looks up, but OpenLayers can't. I can > imagine ways to deal with this, but my first one would be to > complain to CBS that the KML that they're providing is useless to > any non-Google Earth client. > > Additionally, Google Maps seems to think that the file is invalid. > > http://maps.google.com/maps?f=q&hl=en&geocode=&q=http:%2F%2Fwww.cbsnews.com%2Fcommon%2Fincludes%2Fgoogle%2Fcbsnewsfiles.kml&ie=UTF8&z=4 > > Who am I to complain when Google says it's wrong? > > >> So unless my Javascript code is incorrect, it seems like OpenLayers only >> has *partial* support for KML feeds. Is this true? Is there any reason >> why the CBSNews feed should not work in OpenLayers? Here is the >> Javascript code I use to load the KML layer: >> > > Quite simply, the CBS news feed doesn't contain any locations, only > addresses, so you need a full gazetteer for it to work. Calling this KML > at all is simply more evidence that the KML spec is hopelessly > overbroad, and since not even Google will read it, I have no qualms > saying that OpenLayers won't. > > >> map.addLayer(new OpenLayers.Layer.GML( >> 'CBSNews', >> 'http://www.cbsnews.com/common/includes/google/cbsnews.kml', >> { >> format: OpenLayers.Format.KML, >> formatOptions: >> { >> extractStyles: true, >> extractAttributes: true, >> maxDepth: 3 >> } >> } >> )); >> >> I have the identical issue with GML feeds. Example feeds taken from the >> OpenLayers website[4,5] work fine (they draw shapes in France and Canada >> respectively). But a GML feed a co-worker of mine found online[6] does >> not. This co-worker has told me that the feed displays fine in Google >> Earth and shows a number of points across the US (I don't have a >> screenshot for this unfortunately). >> > > I don't understand how this is possible, since the GML file has no > projection data with it, and the file is in projected coordinates. > Assuming you knew which coordinate reference system this was in, you > could probably use it with OpenLayers, either by reprojecting it first > or by using built in reprojection support, but without the actual > SRS/CRS information, there's no way to know how to project it. > > Now, the GML file includes lat/long coordinates as feature attributes, > so you could write a tool which would convert this GML, and perhaps that > is something that some pro version of Google Earth suppots, but Google > Earth won't even let me open this file, so I don't know what he's > getting. > > >> So, is it also true that OpenLayers only has *partial* support for GML >> feeds? Here is my Javascript code for loading a GML layer: >> > > No; we have full support for GML2, and this file parses correctly... but > all its points end up off the upper right corner of the map, since > they're coordinates like: > > > <ogr:geometryProperty><gml:Point><gml:coordinates>451306,5291930</gml:coordinates></gml:Point></ogr:geometryProperty> > > Which isn't anywhere I know how to find. > > Regards, > _______________________________________________ Users mailing list [email protected] http://openlayers.org/mailman/listinfo/users
