11

尝试在使用 Necessitas 的 QWebView 端口查看的 HTML5 网页中获取 GPS 坐标。但是它总是以不支持响应。

function load( )
{
   if ( navigator.geolocation )
   {
      alert( "Supported." );
   }
   else
   {
      alert( "Not Supported!" );
   }
}

我已更改 QWebPage 以允许权限:

BrowserWebPage::BrowserWebPage( QObject* parent ) : QWebPage( parent )
{
    connect( this,
             SIGNAL( featurePermissionRequested( QWebFrame*, QWebPage::Feature ) ),
             SLOT( permissionRequested( QWebFrame*, QWebPage::Feature ) ) );
}

void BrowserWebPage::permissionRequested( QWebFrame* frame, QWebPage::Feature feature )
{
    if ( feature == Geolocation )
    {
        setFeaturePermission( frame, feature, PermissionGrantedByUser );
    }
    else //denied
    {
        setFeaturePermission( frame, feature, PermissionDeniedByUser );
    }
}

并设置以下权限:

android.permission.INTERNET

android.permission.ACCESS_FINE_LOCATION

android.permission.ACCESS_COARSE_LOCATION

编辑

根据此页面,GeoLocation API 存在于 QtWebKit 构建中。

http://trac.webkit.org/wiki/QtWebKitFeatures22

细节

电话:Galaxy Nexus

平台:Android 4.1.1 (SDK 14)

框架:Qt 4.8.0 for Android armv7a

4

2 回答 2

1

我认为您将不得不设置粗略的位置和互联网权限,因为如果我正确的话,精细的位置仅用于 gps。在任何情况下,如果 gps 不可用,则两者兼有是好的原因,将使用您的 Internet 连接上的位置。

   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
   <uses-permission android:name="android.permission.INTERNET" /> 

我真的没有使用 qtwebkit 的经验,但这是我可以告诉你的基础知识。

于 2012-09-24T13:41:14.060 回答
1

我只是尝试了一些非常相似的东西,但无法让 navigator.geolocation 工作,所以我实现了一个自己的地理定位类并将其添加到框架中。

mygeolocation 对象实现了一个信号和一个槽

signal:
void updatepos(float lon, float lat); // called from get location when location is found

slot:
void getlocation(); // gets location and calls updatepos

页面加载后:

frame->addToJavaScriptWindowObject(QString("geo"), geo);
frame->evaluateJavaScript("init()");

geo 是我的地理位置对象的实例

在javascript中,我将我的地理对象信号更新连接到一个函数,

function update(lon,lat)
{
// do stuff with lon, lat
}

function init(){
   geo.connect(update); // connect to QT code
   geo.getlocation(); // ask for update from QT code
}

这是位伪编码 - 我目前没有可用的原始代码。

于 2012-11-16T03:34:18.430 回答