2012-09-14 6 views
11

QWebView के Necessitas के बंदरगाह के साथ देखे गए HTML5 वेब पेज में जीपीएस निर्देशांक प्राप्त करने का प्रयास। हालांकि यह हमेशा समर्थित नहीं के साथ प्रतिक्रिया करता है।एंड्रॉइड प्लेटफ़ॉर्म पर QWebView HTML5 GeoLocation

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

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

मैं अनुमतियाँ अनुमति देने के लिए QWebPage बदल दिया है

android.permission.ACCESS_COARSE_LOCATION

संपादित

इस पेज के अनुसार भौगोलिक-स्थान API QtWebKit निर्माण के भीतर मौजूद है।

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

विवरण

फोन: गैलेक्सी नेक्सस

प्लेटफार्म: एंड्रॉयड 4.1.1 (एसडीके 14)

फ्रेमवर्क: एंड्रॉयड armv7a

+1

मुझे लगता है कि 'android.permission.FINE_LOCATION'' android.permission.ACCESS_FINE_LOCATION' होना चाहिए। साथ ही, क्या आपने यह [उत्तर] देखा है (http://stackoverflow.com/a/5423026/624093)? ऐसा लगता है कि कुछ अच्छी टिप्स हैं (क्यूटी-विशिष्ट नहीं, लेकिन अभी भी मदद कर सकते हैं)। – rexmac

+0

@rexmac धन्यवाद, यह पोस्ट में एक टाइपो था। – Corvusoft

उत्तर

1
के लिए क्यूटी 4.8.0

मुझे लगता है कि आपको मोटे स्थान और इंटरनेट अनुमति सेट करनी होगी क्योंकि ठीक है अगर मैं सही जीपीएस के लिए प्रयोग किया जाता है। किसी भी मामले में दोनों अच्छे कारण हैं यदि जीपीएस उपलब्ध नहीं है तो आपके इंटरनेट कनेक्शन पर स्थान का उपयोग किया जाएगा।

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

मुझे वास्तव में qtwebkit के साथ अनुभव नहीं है लेकिन यह मूल बातें है जो मैं आपको बता सकता हूं।

+0

आपके समय के लिए धन्यवाद। हालांकि यह पहले से ही कोई किस्मत के साथ प्रयास किया गया है। – Corvusoft

+0

इस पर एक नज़र डालें http://www.developer.nokia.com/Community/Discussion/showthread.php?224847-QtWebkit-and-javascript-navigator.geolocation.getCurrentPosition – SunnySonic

1

मैंने अभी कुछ ऐसा ही करने की कोशिश की और काम करने के लिए नेविगेटर.जोलोकेशन नहीं मिला, इसलिए मैंने अपना खुद का भौगोलिक स्थान कक्षा लागू की और इसे फ्रेम में जोड़ा।

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()"); 

कहाँ भू था मेरी जियोलोकेशन वस्तु का उदाहरण

जावास्क्रिप्ट में मैं अपने भू वस्तु जुड़े एक समारोह में सिग्नल अपडेट,

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 
} 

यह थोड़ा छद्म कोडिंग है - मेरे पास इस समय मूल कोड उपलब्ध नहीं है।

संबंधित मुद्दे