OpenLayers从其他站点加载GML文件
OpenLayers loading a GML file from an other site
我在将GML文件加载到OpenLayers中时遇到困难。我把问题归结为以下几个方面:-在以下位置复制/跳过示例:http://openlayers.org/dev/examples/behavior-fixed-http-gml.html-替换到绝对的所有链接
这导致了我从localhost运行的以下文件/代码(文件:///):
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<title>OpenLayers Vector Behavior Example</title>
<link rel="stylesheet" href="http://openlayers.org/dev/theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="http://openlayers.org/dev/examples/style.css" type="text/css" />
<script src="http://openlayers.org/dev/OpenLayers.js"></script>
<script type="text/javascript">
var map;
function init(){
map = new OpenLayers.Map('map');
var wms = new OpenLayers.Layer.WMS(
"OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0",
{layers: 'basic'}
);
var layer = new OpenLayers.Layer.Vector("GML", {
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: "http://openlayers.org/dev/examples/gml/polygon.xml",
format: new OpenLayers.Format.GML()
})
});
map.addLayers([wms, layer]);
map.zoomToExtent(new OpenLayers.Bounds(
-3.92, 44.34, 4.87, 49.55
));
}
</script>
</head>
<body onload="init()">
<h1 id="title">Vector Behavior Example (Fixed/HTTP/GML)</h1>
<div id="tags">
vector, strategy, strategies, protocoll, advanced, gml, http, fixed
</div>
<p id="shortdesc">
Vector layer with a Fixed strategy, HTTP protocol, and GML format.
</p>
<div id="map" class="smallmap"></div>
<div id="docs">
The vector layer shown uses the Fixed strategy, the HTTP protocol,
and the GML format.
The Fixed strategy is a simple strategy that fetches features once
and never re-requests new data.
The HTTP protocol makes requests using HTTP verbs. It should be
constructed with a url that corresponds to a collection of features
(a resource on some server).
The GML format is used to serialize features.
</div>
</body>
</html>
问题是GML没有显示(其他一切都很好)。我在控制台中没有错误,但请求的状态为200 OK(在FF控制台和FireBug网络选项卡中)。我缺少什么?同源策略失败应该会显示一些错误,不是吗?
它确实在Chrome中给出了Access Control Allow Origin错误。
XMLHttpRequest无法加载http://openlayers.org/dev/examples/gml/polygon.xml.起源http://fiddle.jshell.net不是允许访问控制允许来源。
对于FF,它确实提供了一个200响应代码,正如您所说,但响应中不包含任何数据。
http://jsfiddle.net/niklasvh/F76Hp/3/
为了保护用户不受脚本将信息发送到遥远服务器的影响,有一个"同源策略",它规定您只能通过HTTP请求从与当前查看的页面相同的服务器接收数据。
这就解释了为什么wireshark有信息,而firebug没有:浏览器不允许传输信息。
JSON-p是绕过这个问题的一个技巧:
http://en.wikipedia.org/wiki/JSONP
如果您无法访问JSONP源,或者不希望使用JSONP方法,则必须使用代理,该代理会将您的请求转发到远处的服务器,并返回信息,就像它来自您自己的服务器一样。浏览器将无法判断通信最终将到达遥远的服务器,并将允许HTTP请求。
- 如何播放部分音频文件
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在php文件中获取$.post-ajax传递的值
- 直接下载文件,而不是从window.open(url)
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用压缩的JavaScript文件(不是运行时压缩)
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- Javascript运行php文件,然后下载文件
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 我应该如何从xml文件构建一个javascript页面
- OpenLayers从其他站点加载GML文件