设为首页 加入收藏

TOP

OpenLayer加载WFS图层及C#编写ASP.net代理解决跨域问题
2014-11-24 01:43:05 来源: 作者: 【 】 浏览:3
Tags:OpenLayer 加载 WFS 编写 ASP.net 代理 解决 问题

OpenLayer跨域访问geoserver居然要用到代理,貌似Felx就不用。


用C#编写代理网上普遍是这样的:


public class GeoServerProxy1 : IHttpHandler
{


public void ProcessRequest(HttpContext context)
{
if (context.Request.QueryString["URL"] != null)
{
string url = "";
url = context.Request.QueryString["URL"].ToString();
HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(url);
loHttp.Timeout = 10000; // 10 secs
loHttp.UserAgent = "Web Client";
HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse();
Encoding enc = Encoding.GetEncoding(65001);
StreamReader loResponseStream = new StreamReader(loWebResponse.GetResponseStream(), enc);
string lcHtml = loResponseStream.ReadToEnd();
context.Response.Write(lcHtml);
loWebResponse.Close();
loResponseStream.Close();
}
}


public bool IsReusable
{
get
{
return false;
}
}
}


但是上面这种情况,没有考虑post,不适用于openlayers官方的wfs协议访问,但是可以用于http查询方式的访问,例如:


JS代码:


vectorLayer = new OpenLayers.Layer.Vector("覆冰点", {
protocol: new OpenLayers.Protocol.HTTP({
//url: "http://10.180.80.206:9000/geoserver/sdgis/ows service=WFS&version=1.0.0&request=GetFeature&typeName=sdgis:V_YL_24&maxFeatures=50",
//url: "http://10.180.80.206:9000/geoserver/sdgis/ows service=WFS&version=1.0.0&request=GetFeature&typeName=sdgis:GIS_WEATHER_FORECAST&maxFeatures=50",
url: "http://10.180.80.206:9000/geoserver/sdgis/ows service=WFS&version=1.0.0&request=GetFeature&typeName=sdgis:V_FBJC_PT&maxFeatures=50",
format: new OpenLayers.Format.GML()
}),
styleMap: new OpenLayers.StyleMap({
'default': {
strokeColor: "#00FF00",
strokeOpacity: 1,
strokeWidth: 2,
fillColor: "#FF0000",
fillOpacity: 1,
pointRadius: 6,
strokeDashstyle: 'longdashdot',
pointerEvents: "visiblePainted",
externalGraphic: "snow.gif",
graphicWidth: 12,
graphicHeight: 12,
//label: "name: ${OWNER}, age: ${FLAGS}",


fontColor: "${favColor}",
fontSize: "12px",
fontFamily: "Courier New, monospace",
fontWeight: "bold",
labelAlign: "${align}",
labelXOffset: "${xOffset}",
labelYOffset: "${yOffset}"
}
}),
renderers: renderer,
strategies: [new OpenLayers.Strategy.Fixed()]
});


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇eBay 编写第一个 Node.js 应用的.. 下一篇Java实现OpenLayers跨域代理程序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: