0

Cord-ova を使用してデバイスの位置を取得すると、エミュレーターを使用して位置座標にアクセスしようとすると、奇妙な動作が発生します (Galaxy S2 にもコードをデプロイしました ... 同じ問題)。

 document.addEventListener( "deviceready", onDeviceReady, false);
    function onDeviceReady () {
       if (navigator.geolocation) {
          var options = { timeout: 10000, enableHighAccuracy: true, maximumAge: Infinity };
          navigator.geolocation.getCurrentPosition(locationOnSuccess, locationOnSuccess, options);
       } else {
            alert("Geoloc does not exists");
       }
    }

    var locationOnSuccess = function (pos){
       alert('Latitude: '  + pos.coords.latitude);
    }

navigator.geolocation はアラートを発生させるときに存在します これは緯度が未定義であり、エラーが発生する

11-13 08:44:05.296: D/CordovaLog(1861): file:///android_asset/www/index.html: Line 55 : Uncaught TypeError: Cannot read property 'latitude' of undefined
    11-13 08:44:05.296: E/Web Console(1861): Uncaught TypeError: Cannot read property 'latitude' of undefined at file:///android_asset/www/index.html:55

私は今1日苦労していますが、同じ問題を抱えている人を見つけることができません。誰か助けて?

どうもありがとう、S.

4

3 に答える 3

2

これが有効になっていることを確認してください:

(in app/res/xml/config.xml)
<feature name="Geolocation">
    <param name="android-package" value="org.apache.cordova.GeoBroker" />
</feature>


(in app/AndroidManifest.xml)
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

デバイスがジオロケーションをサポートしているかどうかも確認してください

于 2013-11-13T10:02:40.173 に答える
1

PhoneGap のドキュメントでは、位置情報の更新を取得するステートメントは次のように定義されています。

navigator.geolocation.getCurrentPosition(onSuccess, onError);

したがって、成功とエラーのケースがあります。ただし、両方のケースで同じメソッドを呼び出しています。したがって、地理的な場所がない場合、緯度と経度の値を取得できません。これにより、エラーが発生する可能性があります。エラー ケースを else ステートメントで表示する代わりに、これをエラー ケースで表示するエラー関数を定義します。

于 2013-11-13T09:16:32.653 に答える
0

まず、それを locationOnError に変更します

navigator.geolocation.getCurrentPosition(locationOnSuccess、locationOnError、オプション);

navigator.geolocation.watchPosition(coordinates);

function coordinates(p) {

        if (lastTrackedLat == null) {
            lastTrackedLat = p.coords.latitude;
        }

        if (lastTrackedLng == null) {
            lastTrackedLng = p.coords.longitude;
        }

        var lastTrackedLatlng = new google.maps.LatLng(lastTrackedLat,lastTrackedLng);

        var lat = p.coords.latitude;
        var lng = p.coords.longitude;

        var Latlng=new google.maps.LatLng(lat,lng); 
}
于 2013-11-13T09:20:18.523 に答える