我正在使用C#/ ASP.Net中动态生成的KML文件开发基于OpenLayers的地图视图。在代码隐藏文件中,我将查询字符串参数定义为KML文件调用,可能如下所示:
/layouts/KmlDataGenerator.aspx?vaccination=2&cohort=2003%7c2010&sex=3&xaxis=Kommune&landsdel=100&show=Map&datatype=Vaccination&extendedfilters=False
此url字符串插入下面的OpenLayers js代码中的KmlFileName文字中:
vector = new OpenLayers.Layer.Vector("KML", {
projection: wgs84,
strategies: [new OpenLayers.Strategy.Fixed()],
isBaseLayer: false,
protocol: new OpenLayers.Protocol.HTTP({
url: '<asp:Literal ID="KmlFileName" runat="server"/>',
format: new OpenLayers.Format.KML({
extractStyles: true,
extractAttributes: true
})
})
});
问题是IE8和更早版本似乎缓存了一些东西 - 我不确切知道是什么,但除非我按下CTRL + F5或手动清除IE8中的缓存,否则地图永远不会出现。 IE9,Firefox或Chrome中没有此问题......
我尝试添加元标记以防止浏览器缓存页面,我还尝试将随机生成的字符串添加到每个javascript调用的查询字符串中,但没有任何帮助。
任何想法都将受到赞赏!
答案 0 :(得分:0)
我在.ashx文件中使用了相同的目的:
public override void ProcessRequest(HttpContext context)
{
context.Response.Cache.SetNoStore();
// Execute code
context.Response.Write(<content>);
}
答案 1 :(得分:0)
我在一位同事的帮助下解决了这个问题。事实证明,处理地图投影的几行javascript代码必须移动到document.ready()函数。我想知道为什么这只在IE8中是必需的而在其他浏览器中不是必需的。但无论如何,它解决了这个问题。