Phonegap Geolocation API always getting error code 3

谁都会走 提交于 2019-12-12 19:08:20

问题


I am using phonegap geolocation API in my phonegap android application.It always shows error code code 3,Timeout error.I am also try to change timeout variable value to increased,enableHighAccuracy to be true.But no change in result.But it will works on browser not runs in application.Give me the solution for this problem.

This is my code

<!DOCTYPE html>
<html>
<head>
<meta name="viewport"
    content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
    <link rel="stylesheet" href="css/contact.css" type='text/css' />
<link rel="stylesheet" href="css/jquery.mobile-1.3.1.min.css"
    type='text/css' />
    <script type="text/javascript"
    src="http://maps.googleapis.com/maps/api/js?key=AIzaSyCJAbwOQjaVjDy9XJ0UEZCvTdZeW_atXak&sensor=false">
    </script>
<script type="text/javascript" charset="utf-8" src="cordova-2.9.0.js"></script>
<script src="jquery.mobile/jquery-1.10.2.min" type='text/javascript'></script>

<script>

    document.addEventListener("deviceready", onDeviceReady, false);
$(document).on("mobileinit", function() {
    $.mobile.phonegapNavigationEnabled = true;
    $.support.cors = true;
    $.mobile.allowCrossDomainPages = true;
    $.mobile.loadingMessageTextVisible = true;
    $.mobile.pageLoadErrorMessage;
});
$(document).ready(function() {
    $('#Login').show();
    $('#Contacts').hide();
});




function success(name) {
    alert(name);
}

function error() {
    alert("error");
}

function login() {

    var name = $("#name").val();
    if (navigator.notification) {
        navigator.notification.alert("Welcome  " + name, alertDismissed, 'Sample App', 'Ok');
    } else {
        alert("Welcome  " + name);
    }
    var options = {
        enableHighAccuracy: true,
        timeout: 8000,
        maximumAge: 10000
    };
    navigator.geolocation.getCurrentPosition(onSuccess, onError, options);
    $("#Login").hide();
    $("#Contacts").show();

}

function alertDismissed() {
    console.log("ok");
}



function onSuccess(position) {
    var latt1 = position.coords.latitude;
    var lont1 = position.coords.longitude; //alert(latt1+" "+lont1);
    var myLatlng1 = new google.maps.LatLng(latt1, lont1);
    var mapOptions1 = {
        center: myLatlng1,
        zoom: 10,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions1);
    var marker1 = new google.maps.Marker({
        position: myLatlng1,
        map: map,
        title: "You are here! (at least within a " + position.coords.accuracy + " meter radius)"
    });
    var circle = new google.maps.Circle({
        radius: 26000,
        strokeColor: "#00FF00",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#C0C0C0",
        fillOpacity: 0.35,
        map: map
    });
    marker1.setIcon("./images/blue_dot_circle.png");
        marker1.setMap(map);
}

function onError(error) {
    if (navigator.notification) {
        navigator.notification.alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n', alertDismissed, 'Sample App', 'Ok');
    } else {
        alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
    }
}



function AlertConfirmed(buttonIndex) {
    if (buttonIndex == 1) {
        device.exitApp();
        console.log(buttonIndex);
    } else {
        console.log(buttonIndex);
    }
}

function goHome() {
    navigator.app.loadUrl("http://www.google.co.in", {
        openExternal: true
    });
}    


</script>

<script src="jquery.mobile/jquery.mobile-1.3.1.min.js"
    type='text/javascript'></script>
</head>
<body>
<div data-role="page" >
    <div id="Login">
        <div data-role="header" data-position="fixed" data-theme="b"
            data-tap-toggle="false" class="header" data-transition="none"
            id="myFixedHeader">
            <p>Sample Application</p>
        </div>

        <div data-role="content">
            <div id="title">

                <div
                    style="width: 90%; padding-left: 5%; padding-right: 5%; padding-top: 3%; padding-bottom: 1%;">
                    <input type="text" name="password" id="name" data-mini="true"
                        placeholder="Enter Your Name " value="" data-inline="true">
                </div>
                <center>
                    <div id="log"  onclick="login()">Login</div>
                </center>
            </div>
        </div>
        <div data-role="footer" data-theme="b" data-position="fixed"
            class="footer" data-transition="none" data-tap-toggle="false">
            <p onclick="goHome()">&copy;&nbsp;2014
                Sample App Reserved, LLC.</p>>
        </div>
    </div>

    <div  id="Contacts">

        <div data-role="header" data-theme="b" data-tap-toggle="false"
            data-position="fixed" class="header" data-transition="none">
            <h3 id="htitle">Home Page</h3>

        </div>
        <div data-role="content" id="map_canvas" >


        </div>

        <div data-role="footer" data-theme="b" data-position="fixed"
            class="footer" data-transition="none" data-tap-toggle="false">
            <p onclick="goHome()">&copy;&nbsp;2014
                Sample App Reserved, LLC.</p>
        </div>

</div>

</body>
</html>


I have added Permissions INTERNET,FINE_LOCATION,COARSE_LOCATION in manifest file
and corrova 2.9.0.js

回答1:


Please make sure that you have <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> set in your android manifest.




回答2:


I made one mistake in config.xml.Now,I have added 

   <access origin="*"/> 
  <access origin="*://*.googleapis.com/*" subdomains="true" />
<access origin="*://*.gstatic.com/*" subdomains="true" />
<access origin="*://*.google.com/*" subdomains="true" />
<access origin="*://*.googleusercontent.com/*" subdomains="true" />

in my config.xml file.googlemap geolocation showed successfully



回答3:


Make entry in app/res/xml/config.xml

Entry:

And in app/AndroidManifest.xml

Entry:

Also make sure that the enablehighAccuracy parameter is set to true.

Cheers!!



来源:https://stackoverflow.com/questions/23076453/phonegap-geolocation-api-always-getting-error-code-3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!