当我尝试使用phonegap打包我的sencha-touch应用程序时遇到了问题。一切正常,除了在phonegap中访问WFS。 (并且应用程序在浏览器中运行没有问题,WFS访问正常)
我的手机版本是2.9; openlayer版本是2.13
这里我介绍我的简单代码。您还可以查看以下网站中的示例代码:http://openlayers.org/dev/examples/wfs-filter.html
var rootUrl = window.location.protocol +“//”+ window.location.host +'/'; var map;
function init() {
map = new OpenLayers.Map({
div: "map",
layers: [
new OpenLayers.Layer.WMS(
"Natural Earth",
"http://demo.opengeo.org/geoserver/wms",
{ layers: "topp:naturalearth" }
),
new OpenLayers.Layer.Vector("WFS", {
strategies: [new OpenLayers.Strategy.BBOX()],
protocol: new OpenLayers.Protocol.WFS({
url: rootUrl + 'proxy.py?url=http://demo.opengeo.org/geoserver/wfs',
featureType: "tasmania_roads",
featureNS: "http://www.openplans.org/topp"
}),
styleMap: new OpenLayers.StyleMap({
strokeWidth: 3,
strokeColor: "#333333"
}),
})
],
center: new OpenLayers.LonLat(146.7, -41.8),
zoom: 6
});
}
在phonegap中访问WMS没有问题,但是当我尝试WFS时,它永远不会工作。
与我之前展示的链接相比,地图中显示了一条道路,它是通过WFS获得的。在我的phonegap应用中,不会显示道路。
我想知道这是WFS问题还是电话空白问题。在我的phonegap应用程序中阻止我访问WFS。
请给我一些建议和提示,伙计们!我真的很感激。
function getLayerList() {
$.ajax({ url: rootUrl + 'proxy.py?url=http://192.168.0.23/LBEService/Service1.svc/GetEventList',
//async: false,
data: JSON.stringify({}),
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (result) {
console.log(result);
$("#demo").html(result[0].event_NAME);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
}).done(function () {
});
}
答案 0 :(得分:0)
您是否已将托管WFS的域添加到白名单?
http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html
答案 1 :(得分:0)
在android PhoneGap上,window.location.protocol是'file:',window.location.hostname是“”,所以你的应用可能会找到file://proxy.py?在您的设备上不存在。
要解决此问题,我测试协议,并相应地设置OpenLayers.Proxy,因此:
if( location.protocol == 'file:' ) {
OpenLayers.ProxyHost = "";
} else {
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
}
所以在你的情况下,如果protocol是'file:',我认为你需要删除'proxy.py?'
提示:在PC上使用Chrome调试您的Android应用程序(chrome:// inspect /#devices),您将看到Android正在进行的请求。