2011-06-28 28 views
0

У меня есть форма, которую пользователи должны заполнить, это отнимает много времени на клавиатуре с сенсорным экраном, поэтому я хочу «автозаполнять» предложения на основе некоторого пользовательского ввода, такого как zipcodeAndroid autodetect city, состояние на основе zipcode

вместо того, чтобы пользователь, введя их адрес, город, штат, почтовый индекс

пользователь может вместо этого ввести адрес, почтовый индекс и получить авто заполненных предложения для города и государства.

Затем они могут редактировать их, если они неверны, но много раз это будет достаточно правильно, особенно для состояния.

Как это сделать в Android с наименьшим размером приложения. Я видел, что Google имеет какое-то геокодирования API, но я не уверен, если это имеет отношение к андроид

Любая проницательность оценена

ответ

1

Для самых маленьких приложений след, если вы не делать никаких предположений о том, где пользователь вам нужно использовать какой-то веб-сервис, чтобы получить это. Беглый googling показывает this в качестве примера.

Если по какой-то причине вы ожидаете, что пользователи из небольшой географической зоны (например, только одного города) будут использовать ваше приложение, выпеченный файл базы данных/поиска будет осуществим, но не для покрытия всего округа.

+0

мне это нравится, но слишком медленно. Мне нужно использовать один из сервисов Google, если возможно – CQM

+1

http://stackoverflow.com/questions/4749706/lookup-city-and-state-by-zip-google-geocode-api – maxpower47

1

Для нашего веб-приложение, мы используем zipcodeapi/COM/примеры:

<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"); 
}); 

//]]> Индекс Расстояние

Смежные вопросы