-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathgeo_autocomplete.js
68 lines (63 loc) · 2.66 KB
/
geo_autocomplete.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
* jQuery geo_autocomplete plugin 1.0
*
* Copyright (c) 2009 Bob Hitching
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Requires jQuery Autocomplete plugin by Jörn Zaefferer - see http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
* jquery.autocomplete.js requires a minor modification for geo_autocomplete to work, as shown in /lib/jquery.autocomplete_geomod.js
*
*/
;(function($) {
$.fn.extend({
geo_autocomplete: function(_geocoder, _options) {
options = $.extend({}, $.Autocompleter.defaults, {
geocoder: _geocoder,
mapwidth: 100,
mapheight: 100,
maptype: 'terrain',
mapkey: 'ABQIAAAAbnvDoAoYOSW2iqoXiGTpYBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxQNumU68AwGqjbSNF9YO8NokKst8w', // localhost
mapsensor: false,
parse: function(_results, _status, _query) {
var _parsed = [];
if (_results && _status && _status == 'OK') {
$.each(_results, function(_key, _result) {
if (_result.geometry && _result.geometry.viewport) {
// place is first matching segment, or first segment
var _place_parts = _result.formatted_address.split(',');
var _place = _place_parts[0];
$.each(_place_parts, function(_key, _part) {
if (_part.toLowerCase().indexOf(_query.toLowerCase()) != -1) {
_place = $.trim(_part);
return false; // break
}
});
_parsed.push({
data: _result,
value: _place,
result: _place
});
}
});
}
return _parsed;
},
formatItem: function(_data, _i, _n, _value) {
var _src = 'http://maps.google.com/maps/api/staticmap?visible=' + _data.geometry.viewport.getSouthWest().toUrlValue() + '|' + _data.geometry.viewport.getNorthEast().toUrlValue() + '&size=' + options.mapwidth + 'x' + options.mapheight + '&maptype=' + options.maptype + '&key=' + options.mapkey + '&sensor=' + (options.mapsensor ? 'true' : 'false');
var _place = _data.formatted_address.replace(/,/gi, ',<br/>');
return '<img src="' + _src + '" width="' + options.mapwidth + '" height="' + options.mapheight + '" /> ' + _place + '<br clear="both"/>';
}
}, _options);
// if highlight is set to false, replace it with a do-nothing function
options.highlight = options.highlight || function(value) { return value; };
// if the formatMatch option is not specified, then use formatItem for backwards compatibility
options.formatMatch = options.formatMatch || options.formatItem;
return this.each(function() {
new $.Autocompleter(this, options);
});
}
});
})(jQuery);