5

ユーザーの現在の場所を取得し、郵便番号を表示する次のJSがあります...

(function ($, geolocation) {
    if (geolocation) {
        geolocation.getCurrentPosition(function (position) {
            $.getJSON(
                "http://ws.geonames.org/findNearestAddressJSON?callback=?",
                {
                    lat : position.coords.latitude,
                    lng : position.coords.longitude
                },
                function (data) {
                    $(function () {
                        $('#zip').text(data.address.postalcode);
                    });
                }
            );
        });
    }
}(jQuery, navigator.geolocation));

私の元のコードはかなりひどかったので、CodeReview で親切に助けてくれました

HTML:

<div id="zip"></div>

...次に、郵便番号を div に表示します。

apple-mobile-web-app-capableこれはモバイル Safari とデスクトップ Safari で正常に動作しますが、メタ タグを追加するとすぐにコードが壊れます。

各ステップの後にコードをコンソールに記録しましたが、通常の Safari と Mobile Safari ですべてスムーズに実行されました。ただし、ホーム画面に追加するとすぐに(メタタグを頭に付けて)、アプリはJSコードを実行しませんでした. コンソールへのログ記録も気にならなかったので、WebApps で位置情報サービスが許可されているかどうか疑問に思いました。

この問題は、ホーム画面から実行中にページを再ロードした場合にも発生します。

とにかくこれを修正する方法はありますか?これはよくある問題ですか?

4

2 に答える 2

1

はい、iOS Webアプリは、apple-mobile-web-app-capableメタタグを使用して、を介して位置情報サービスを許可しますnavigator.geolocation。エラーコールバックがないので、問題のヒントが得られる可能性があります。さらに分析するためにHTMLを投稿してください。

これだけをページに配置してみてください(apple-mobile-web-app-capableセット付き):

navigator.geolocation.getCurrentPosition( function ( position ) {
    alert( 'yay!' );    
},
function ( error ) {
    alert( 'boo! error: ' + error.message );
} );

あなたのコメントに基づいて、これは機能するので、位置情報サービスではありません。最後の行の括弧の順序を変更してみてください。

} )( jQuery, window.navigator.geolocation );

また、これは少し奇妙に見えます。これは、の呼び出しが完了し.text()たときではなく、すぐに行われるためです。.getJSON()

function (data) {
    $(function () {
        $('#zip').text(data.address.postalcode);
    });
}

試す:

function (data) {
    $('#zip').text(data.address.postalcode);
}

したがって、最終的なコードは次のようになります。

( function ( $, geolocation ) {
    if (geolocation) {
        geolocation.getCurrentPosition( function ( position ) {
            $.getJSON(
                "http://ws.geonames.org/findNearestAddressJSON?callback=?",
                {
                    lat : position.coords.latitude,
                    lng : position.coords.longitude
                },
                function (data) {
                    $('#zip').text(data.address.postalcode);
                }
            );
        });
    }
} )( jQuery, window.navigator.geolocation );
于 2012-07-14T06:39:46.097 に答える
0

Appleには、webAppのローカリゼーションを取得する独自の方法があります。iOS開発者プログラムを使用している場合は、公式ドキュメントを確認する必要があります。

これをチェックしてください:http://developer.apple.com/library/ios/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/GettingGeographicalLocations/GettingGeographicalLocations.html#//apple_ref/doc/uid/TP40002051-CH5-SW2

于 2012-07-14T01:10:59.887 に答える