phonegap WFS代理问题

时间:2014-03-25 00:01:42

标签: android cordova openlayers

当我尝试使用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 () {

        });
    }

2 个答案:

答案 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正在进行的请求。