src/cm/media/js/lib/yui/yui_3.10.3/docs/autocomplete/ac-geocode.html
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
<!DOCTYPE html>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
<html lang="en">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
<head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
    <meta charset="utf-8">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
    <title>Example: Address Completion on Google&#x27;s Geocoding Service</title>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
    <link rel="stylesheet" href="../../build/cssgrids/cssgrids-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
    <link rel="stylesheet" href="../assets/css/main.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
    <link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
    <script src="../../build/yui/yui-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
</head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
<body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
<!--
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
<a href="https://github.com/yui/yui3"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
-->
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
<div id="doc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    <div id="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        <h1><img src="http://yuilibrary.com/img/yui-logo.png"></h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
            <h1>Example: Address Completion on Google&#x27;s Geocoding Service</h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    <div class="yui3-g">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
        <div class="yui3-u-3-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
            <div id="main">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
                <div class="content"><div class="intro">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
        This example demonstrates how to provide AutoComplete suggestions for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
        an address calling Google's Geocoding Service.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        Geocoding is the process of converting addresses into geographic
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        coordinates. The <a href="https://developers.google.com/maps/documentation/geocoding/">Google Geocoding API</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        provides a direct way to access a geocoder via an HTTP request.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
        Google's Geocoding Service returns a JSON object literal. The service does
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
        not provide a JSONP API. AutoComplete cannot use that object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
        directly for security reasons. So the workaround is calling the service
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        using YQL as source.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
<div class="example">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    <div id="demo" class="yui3-skin-sam"> <!-- You need this skin class -->
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        <label for="ac-input">Enter an address:</label>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        <input id="ac-input" type="text" />
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
    <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
        <li>Latitude: <strong id="locationLat"></strong></li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
        <li>Longitude: <strong id="locationLng"></strong></li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
    </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
    <script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
        YUI().use('autocomplete', function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
    var acNode = Y.one('#ac-input');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
    acNode.plug(Y.Plugin.AutoComplete, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        // Highlight the first result of the list.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
        activateFirstItem: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
        // The list of the results contains up to 10 results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        maxResults: 10,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
        // To display the suggestions, the minimum of typed chars is five.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
        minQueryLength: 5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
        // Number of milliseconds to wait after user input before triggering a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
        // <code>query</code> event. This is useful to throttle queries to a remote data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
        // source.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
        queryDelay: 500,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
        // Handling the list of results is mandatory, because the service can be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
        // unavailable, can return an error, one result, or an array of results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
        // However <code>resultListLocator</code> needs to always return an array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
        resultListLocator: function (response) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
            // Makes sure an array is returned even on an error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
            if (response.error) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
                return [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
            var query = response.query.results.json,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
                addresses;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
            if (query.status !== 'OK') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
                return [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
            // Grab the actual addresses from the YQL query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
            addresses = query.results;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
            // Makes sure an array is always returned.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
            return addresses.length > 0 ? addresses : [addresses];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
        // When an item is selected, the value of the field indicated in the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
        // <code>resultTextLocator</code> is displayed in the input field.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
        resultTextLocator: 'formatted_address',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        // {query} placeholder is encoded, but to handle the spaces correctly,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
        // the query is has to be encoded again:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
        //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
        // "my address" -> "my%2520address" // OK => {request}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
        // "my address" -> "my%20address"   // OK => {query}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
        requestTemplate: function (query) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
            return encodeURI(query);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
        // {request} placeholder, instead of the {query} one, this will insert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
        // the <code>requestTemplate</code> value instead of the raw <code>query</code> value for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        // cases where you actually want a double-encoded (or customized) query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        source: 'SELECT * FROM json WHERE ' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
                    'url="http://maps.googleapis.com/maps/api/geocode/json?' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
                        'sensor=false&' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
                        'address={request}"',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
        // Automatically adjust the width of the dropdown list.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
        width: 'auto'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
    // Adjust the width of the input container.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    acNode.ac.after('resultsChange', function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
        var newWidth = this.get('boundingBox').get('offsetWidth');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        acNode.setStyle('width', Math.max(newWidth, 100));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
    // Fill the <code>lat</code> and <code>lng</code> fields when the user selects an item.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
    acNode.ac.on('select', function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
        var location = e.result.raw.geometry.location;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
        Y.one('#locationLat').set('text', location.lat);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
        Y.one('#locationLng').set('text', location.lng);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
    </script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
<h2>Complete Example Source</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
<h3>JavaScript</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
<pre class="code prettyprint">YUI().use(&#x27;autocomplete&#x27;, function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
    var acNode = Y.one(&#x27;#ac-input&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
    acNode.plug(Y.Plugin.AutoComplete, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
        &#x2F;&#x2F; Highlight the first result of the list.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
        activateFirstItem: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
        &#x2F;&#x2F; The list of the results contains up to 10 results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
        maxResults: 10,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
        &#x2F;&#x2F; To display the suggestions, the minimum of typed chars is five.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
        minQueryLength: 5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
        &#x2F;&#x2F; Number of milliseconds to wait after user input before triggering a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
        &#x2F;&#x2F; &#x60;query&#x60; event. This is useful to throttle queries to a remote data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
        &#x2F;&#x2F; source.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
        queryDelay: 500,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
        &#x2F;&#x2F; Handling the list of results is mandatory, because the service can be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        &#x2F;&#x2F; unavailable, can return an error, one result, or an array of results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
        &#x2F;&#x2F; However &#x60;resultListLocator&#x60; needs to always return an array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
        resultListLocator: function (response) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
            &#x2F;&#x2F; Makes sure an array is returned even on an error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
            if (response.error) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
                return [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
            var query = response.query.results.json,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
                addresses;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
            if (query.status !== &#x27;OK&#x27;) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
                return [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
            &#x2F;&#x2F; Grab the actual addresses from the YQL query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
            addresses = query.results;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
            &#x2F;&#x2F; Makes sure an array is always returned.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
            return addresses.length &gt; 0 ? addresses : [addresses];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
        &#x2F;&#x2F; When an item is selected, the value of the field indicated in the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
        &#x2F;&#x2F; &#x60;resultTextLocator&#x60; is displayed in the input field.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        resultTextLocator: &#x27;formatted_address&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        &#x2F;&#x2F; {query} placeholder is encoded, but to handle the spaces correctly,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        &#x2F;&#x2F; the query is has to be encoded again:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        &#x2F;&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        &#x2F;&#x2F; &quot;my address&quot; -&gt; &quot;my%2520address&quot; &#x2F;&#x2F; OK =&gt; {request}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
        &#x2F;&#x2F; &quot;my address&quot; -&gt; &quot;my%20address&quot;   &#x2F;&#x2F; OK =&gt; {query}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
        requestTemplate: function (query) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
            return encodeURI(query);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
        &#x2F;&#x2F; {request} placeholder, instead of the {query} one, this will insert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
        &#x2F;&#x2F; the &#x60;requestTemplate&#x60; value instead of the raw &#x60;query&#x60; value for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
        &#x2F;&#x2F; cases where you actually want a double-encoded (or customized) query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
        source: &#x27;SELECT * FROM json WHERE &#x27; +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
                    &#x27;url=&quot;http:&#x2F;&#x2F;maps.googleapis.com&#x2F;maps&#x2F;api&#x2F;geocode&#x2F;json?&#x27; +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
                        &#x27;sensor=false&amp;&#x27; +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
                        &#x27;address={request}&quot;&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
        &#x2F;&#x2F; Automatically adjust the width of the dropdown list.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
        width: &#x27;auto&#x27;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
    &#x2F;&#x2F; Adjust the width of the input container.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
    acNode.ac.after(&#x27;resultsChange&#x27;, function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
        var newWidth = this.get(&#x27;boundingBox&#x27;).get(&#x27;offsetWidth&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
        acNode.setStyle(&#x27;width&#x27;, Math.max(newWidth, 100));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
    &#x2F;&#x2F; Fill the &#x60;lat&#x60; and &#x60;lng&#x60; fields when the user selects an item.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
    acNode.ac.on(&#x27;select&#x27;, function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        var location = e.result.raw.geometry.location;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
        Y.one(&#x27;#locationLat&#x27;).set(&#x27;text&#x27;, location.lat);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
        Y.one(&#x27;#locationLng&#x27;).set(&#x27;text&#x27;, location.lng);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
<h3>HTML</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
<strong>Note:</strong> be sure to add the <code>yui3-skin-sam</code> classname to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
page's <code>&lt;body&gt;</code> element or to a parent element of the widget in order to apply
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
the default CSS skin. See <a href="http://yuilibrary.com/yui/docs/tutorials/skins/">Understanding Skinning</a>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
<pre class="code prettyprint">&lt;div id=&quot;demo&quot; class=&quot;yui3-skin-sam&quot;&gt; &lt;!-- You need this skin class --&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
    &lt;p&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
        &lt;label for=&quot;ac-input&quot;&gt;Enter an address:&lt;&#x2F;label&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
        &lt;input id=&quot;ac-input&quot; type=&quot;text&quot; &#x2F;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
    &lt;&#x2F;p&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
    &lt;ul&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
        &lt;li&gt;Latitude: &lt;strong id=&quot;locationLat&quot;&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
        &lt;li&gt;Longitude: &lt;strong id=&quot;locationLng&quot;&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
    &lt;&#x2F;ul&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
&lt;&#x2F;div&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
        <div class="yui3-u-1-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
            <div class="sidebar">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
                            <h2 class="no-toc">Examples</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
                                        <li data-description="How to provide autocomplete suggestions from a local array.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
                                            <a href="ac-local.html">Basic Local Data</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
                                        <li data-description="How to provide autocomplete suggestions using a remote JSONP source.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
                                            <a href="ac-jsonp.html">Remote Data via JSONP</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
                                        <li data-description="How to provide autocomplete suggestions using a YQL query source.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
                                            <a href="ac-yql.html">Remote Data via YQL</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
                                        <li data-description="How to provide autocomplete suggestions using a DataSource instance.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
                                            <a href="ac-datasource.html">Remote Data via DataSource</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
                                        <li data-description="How to implement delimited tag completion.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
                                            <a href="ac-tagging.html">Tag Completion Using Query Delimiters</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
                                        <li data-description="How to find and select Flickr photos using a YQL source and a custom autocomplete result formatter.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
                                            <a href="ac-flickr.html">Find Photos on Flickr (Custom Formatting, YQL Source)</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
                                        <li data-description="How to use autocomplete-base to filter a set of existing items on a page.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
                                            <a href="ac-filter.html">Filter a Set of Existing Items on a Page</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
                                        <li data-description="How to find an address using a YQL source calling Google&#x27;s Geocoding Service">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
                                            <a href="ac-geocode.html">Address Completion on Google&#x27;s Geocoding Service</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
<script src="../assets/vendor/prettify/prettify-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
<script>prettyPrint();</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
<script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
YUI.Env.Tests = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
    examples: [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
    project: '../assets',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
    assets: '../assets/autocomplete',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
    name: 'ac-geocode',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
    title: 'Address Completion on Google&#x27;s Geocoding Service',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
    newWindow: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
    auto:  false 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
YUI.Env.Tests.examples.push('ac-local');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
YUI.Env.Tests.examples.push('ac-jsonp');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
YUI.Env.Tests.examples.push('ac-yql');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
YUI.Env.Tests.examples.push('ac-datasource');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
YUI.Env.Tests.examples.push('ac-tagging');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
YUI.Env.Tests.examples.push('ac-flickr');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
YUI.Env.Tests.examples.push('ac-filter');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
YUI.Env.Tests.examples.push('ac-geocode');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
<script src="../assets/yui/test-runner.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
</body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
</html>