11

Necessitas の QWebView ポートで表示された HTML5 Web ページで 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

詳細

電話: ギャラクシー ネクサス

プラットフォーム: Android 4.1.1 (SDK 14)

フレームワーク: Qt 4.8.0 for Android armv7a

4

2 に答える 2

1

細かい場所は正しい場合にのみGPSに使用されるため、大まかな場所とインターネットの許可を設定する必要があると思います。いずれにせよ、gpsが利用できない場合は、インターネット接続上の場所が使用されます。

   <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 に答える