0

ユーザーが入力する必要があるフォームがありますが、タッチスクリーン キーボードでは時間がかかるため、郵便番号などのユーザー入力に基づいて提案を「オートコンプリート」したいと考えています。

ユーザーが住所、都市、州、郵便番号を入力する代わりに

ユーザーは代わりに住所、郵便番号を入力し、都市と州の自動入力候補を取得できます。

それらが間違っている場合は編集できますが、多くの場合、特に州については十分に正しいでしょう。

アプリのフットプリントが最小の Android でこれを行うにはどうすればよいでしょうか。Google にはある種のジオコード API があることがわかりましたが、それが Android に関連しているかどうかはわかりません

任意の洞察をいただければ幸いです

4

2 に答える 2

1

アプリのフットプリントを最小にするには、ユーザーがどこにいるのかを想定しない場合、何らかの Web サービスを使用してこれを取得する必要があります。大雑把にグーグルで調べると、これが例として明らかになります。

何らかの理由で、地理的に狭い地域 (1 つの都市周辺など) のユーザーのみがアプリを使用すると予想される場合は、焼き付けられたデータベース/ルックアップ ファイルを使用できますが、郡全体をカバーすることはできません。

于 2011-06-28T17:09:20.720 に答える
1

この Web アプリでは、zipcodeapi/com/examples を使用します。

<script type="text/javascript">//<![CDATA[
$(function() {
    // IMPORTANT: Fill in your client key
    var clientKey = "js-9qZHzu2Flc59Eq5rx10JdKERovBlJp3TQ3ApyC4TOa3tA8U7aVRnFwf41RpLgtE7";

    var cache = {};
    var container = $("#example1");
    var errorDiv = container.find("div.text-error");

    /** Handle successful response */
    function handleResp(data)
    {
        // Check for error
        if (data.error_msg)
            errorDiv.text(data.error_msg);
        else if ("city" in data)
        {
            // Set city and state
            container.find("input[name='city']").val(data.city);
            container.find("input[name='state']").val(data.state);
        }
    }

    // Set up event handlers
    container.find("input[name='zipcode']").on("keyup change", function() {
        // Get zip code
        var zipcode = $(this).val().substring(0, 5);
        if (zipcode.length == 5 && /^[0-9]+$/.test(zipcode))
        {
            // Clear error
            errorDiv.empty();

            // Check cache
            if (zipcode in cache)
            {
                handleResp(cache[zipcode]);
            }
            else
            {
                // Build url
                var url = "https://www.zipcodeapi.com/rest/"+clientKey+"/info.json/" + zipcode + "/radians";

                // Make AJAX request
                $.ajax({
                    "url": url,
                    "dataType": "json"
                }).done(function(data) {
                    handleResp(data);

                    // Store in cache
                    cache[zipcode] = data;
                }).fail(function(data) {
                    if (data.responseText && (json = $.parseJSON(data.responseText)))
                    {
                        // Store in cache
                        cache[zipcode] = json;

                        // Check for error
                        if (json.error_msg)
                            errorDiv.text(json.error_msg);
                    }
                    else
                        errorDiv.text('Request failed.');
                });
            }
        }
    }).trigger("change");
});

//]]> 郵便番号距離

于 2016-06-10T20:26:43.030 に答える