2013-09-25 13 views
5

私はPhonegapアプリを持っています。私はHTMLでcordova.jsを含めています(ただしwwwディレクトリに)、私が解雇されるdevicereadyを待っています、そして私はこの中で(iOS現在地使用許可ダイアログをPhonegapアプリに2回表示

navigator.geolocation.getCurrentPosition(successCallback,failCallback); 

私は、ダイアログの両方のバージョンを受けていますが呼んでいます順):

ネイティブダイアログ - http://i.stack.imgur.com/H5y1O.png
HTMLダイアログ - http://i.stack.imgur.com/XbcmR.png

答えて

5

あなたはPhoneGapのバージョン3+を使用している場合、あなたは正しくプラグインを含めていることを確認してください。 PhoneGap v3.0.0 API Docsから

バージョン3.0のように、コルドバ、プラグインなどのデバイスレベルのAPIを実装します。コマンドラインインターフェイスで説明されているCLIのプラグインコマンドを使用して、この機能をプロジェクトに追加または削除します。

+0

AH!これは完璧です。私はこれを逃したとは信じられません。 – bendalton

+0

@brandonjpプラグインのインストールを忘れてしまった場合、どのように2つのメッセージが表示されますか?私はプラグインをドキュメントに書かれているようにインストールしましたが、私はまだ両方のメッセージを持っています。何か案が? –

+0

こんにちは、どのようにCordovaでiPhone上の場所の許可アラートを無効にする。 –

-1

config.xmlを変更するには "cordova prepare"を実行する必要があります。自動的にcordolocation_plugins.jsが生成され、ジオロケーションプラグインに使用されます。

コードナビを実行すると、すべての/ wwwフォルダが消去されるので、注意してください。あなたはすべてのプラグインを追加する必要があり、あなたはあなたのコードが/ WWWフォルダに追加する前に、ご使用の環境をセットアップします

Tipically ...

0

はdevicereadyが発射された直後にgetCurrentPositionを呼び出さないでください。 geolocationプラグインが準備されていないので、navigator.geolocation.getCurrentPositionは実際にHTML5 apiを呼び出します。その後、HTMLダイアログが表示されます。私は私のイオンプロジェクトでnavigator.geolocation.getCurrentPositionを呼び出す前に、ジオロケーションのプラグインが準備完了であることを確認するために以下を行います。

var my_getposition = function() { 
     if (ionic.Platform.isIOS() && !window.Coordinates) { 
      $timeout(function(){ my_getposition(); }, 500); 
      return; 
     } 
     navigator.geolocation.getCurrentPosition(...); 
    } 
関連する問題