前端时间在项目中遇到了需要使用高德地址输入提示的需求,需要同时获取地址名称和相应的经纬度信息,经过查阅高德api文档,发现高德有一个默认带界面的输入提示功能,开发起来非常方便,但是在使用一段时间后发现,在输入一个类型地址,例如:中国银行,麦当劳等一种品牌或类型的地址时,高德不能返回具体的经纬度信息,这导致表单中的经纬度信息不能正常获取,后来继续查阅高德api,发现它还支持另外一种不带界面的提示功能,就不会出现在上面提到的获取不到经纬度数据的问题了;以上作为此文的背景吧,使用typeahead.js可以低成本的实现类似高德输入提示的功能又不会出现获取不到经纬度的情况;一般场景使用typeahead.js从服务端获取数据的场景我就不再多说了,可以直接参考官方文档:https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md#jquerytypeaheadoptions-datasets
我想在这里说的是将高德API和typeahead.js集成使用的场景;
必要条件,引入高德api和typeahead的js文件
以下为具体代码
<script type="text/javascript"> /** * 添加地图事件 * @param comp */ function addAMapListener(comp){ var placeSearch = new AMap.PlaceSearch({ city:'城市code',//具体请见高德官网 extensions:'all'//输入提示返回所有相关信息 }); $('#' + comp).typeahead({ highlight: true, hint:false }, { limit: 10,//提示数量 displayKey: 'suggest',//返回json数据中展示的属性 source: function(query, syncResults, async) { placeSearch.search(query, function(status, result){ if("complete" != status){ return ; }//这里调用高德的api var pois = result.poiList.pois; // console.log(JSON.stringify(pois)); formatSuggest(pois); async(pois);//将数据异步展示 }); } }); //这里绑定选中后的事件 $('#' + comp).bind('typeahead:select', function(ev, suggestion) { var curTr = $(ev.target).closest('div'); //curTr.find('.input-address-amaps-juma').val(suggestion.name); $('#' + comp).typeahead('val', suggestion.name); curTr.find('.input-address-amaps-regionCode').val(""); curTr.find('.input-address-amaps-detail').val(suggestion.pname + suggestion.cityname + suggestion.adname + suggestion.address); curTr.find('.input-address-amaps-coordinates').val(suggestion.location.lng + "," + suggestion.location.lat); }); //避免遮挡 $('.tt-input').css('z-index', 1); } //格式化展示内容 function formatSuggest(data){ if(data == null || data.length <= 0) return ; for(var i = 0;i < data.length; i++){ data[i].suggest = data[i].name + '-' + data[i].address; } } </script>
以上代码可以实现类似高德的地址提示效果,并可以解决没有经纬度的问题;
另外,在项目中还遇到了因为网速问题导致高德插件没有加载完成,导致业务代码调用报错的问题,高德提供了一个初始化回调,可以保证在插件初始化完成之后在调用业务代码,以下是高德给出的代码
<script src="http://webapi.amap.com/maps?v=1.3&key=您申请的key值&callback=init"></script>
<script type="text/javascript">
window.init = function(){
var map = new AMap.Map('container', { center:[117.000923,36.675807], zoom:11 });
}
</script>
效果如下图
相关推荐
《深入理解Typeahead.js:基于Bootstrap的智能提示库》 Typeahead.js是Twitter Bootstrap框架中的一个强大组件,专为实现快速、高效的自动补全功能而设计。它以其灵活性和高度可定制性,广泛应用于各种Web应用程序...
Typeahead.js是Twitter开源的一个JavaScript库,它提供了自动完成的功能,可以在用户输入时快速显示匹配的数据建议。Typeahead.js的核心功能包括异步数据加载、分组结果和自定义模板,使得创建交互式搜索体验变得...
Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,功能很强大,上传的包括两个文件一个bootstrap-typeahead.js和一个underscore-min.js,前者基本上可以满足一般需求了,后一个js是使用对象数据时...
入门如何获取typeahead.js取决于您: 用安装: $ bower install corejs-typeahead 使用安装: $ npm install corejs-typeahead 使用安装: $ composer require corejavascript/typeahead.js 单独下载最新的dist文件...
Typeahead.js是由Twitter开发的一个轻量级但功能丰富的JavaScript库,专为实现输入自动补全功能而设计。它为Web开发者提供了一种简单、灵活的方式来增强用户在表单输入时的交互体验。这个库的核心优势在于它的可扩展...
8. **使用场景**:`typeahead.js`适用于任何需要动态搜索和自动补全的Web应用,如搜索引擎、电子商务网站的产品搜索、地址输入框等。 9. **开发与调试**:下载的`typeaheadjs-master`文件可能包含`examples`目录,...
jQuery百度搜索自动补全插件基于流行的JavaScript库jQuery和typeahead.js实现,为网页上的搜索框提供了高效且用户友好的自动补全功能。这个插件主要用于提升用户体验,尤其是在需要处理大量数据并希望用户能快速找到...
typeahead.js实现边输入边查询
在Ruby on Rails框架中,Typeahead Addresspicker是一款强大的组件,它结合了Twitter的Typeahead.js库和Google Maps的Geocoding API,为用户提供了动态、自动完成的地址输入功能。本文将深入探讨Typeahead ...
8. **可扩展性与模块化**: "typeahead.js-master"源码仓库中,我们可以看到Typeahead的设计考虑到了模块化和可扩展性,便于与其他库集成或进行二次开发。 总的来说,"前端项目-corejs-typeahead.zip"提供的...
`flutter_typeahead` 还提供了其他高级特性,如自定义过滤策略(如模糊匹配、精确匹配等)、输入框的占位符、提示文本、输入限制以及自定义提示列表视图等。开发者可以根据需求调整这些参数以适应不同的场景。 在与...
Bootstrap-typeahead.js-with-Codeigniter 使用 Codeigniter 中的预先输入功能 ###Download 下载最新的 。 在 jQuery 和 Bootstrap Javascript 之后将它包含在您的源代码中。 ###控制器 <?php defined ( '...
Ember Typeahead.js组件 用于自动填充部件使用 安装 使用Bower安装 bower install ember-typeahead 用法 包括typeahead.js和ember-typeahead.js [removed][removed] [removed][removed] 在您的车把模板中添加...
`typeahead.js`是一款基于jQuery的插件,它提供了快速、高效的自动补全功能,特别适用于输入框中输入内容时的提示。该插件支持多种数据源,如数组、JSON对象或远程API,能够根据用户输入的字符进行实时匹配,显示最...
用于 Shiny 的 typeahead.js 该项目记录了一种将 UI 组件集成到小程序(Shiny 是 R 的... 这个存储库是一个最小但功能强大的展示了 typeahead.js 和 Shiny 的集成。 有关更完整的示例,请在使用它的预测文本建模项目。
Meteor 是一个全栈的 JavaScript 开发框架,而 Bootstrap 是流行的前端 UI 工具包,Typeahead.js 是 Bootstrap 提供的一个自动补全组件,用于实现搜索框的智能提示功能。 【描述解析】 "comerc:bs-typeahead 包装的...
Ajax-typeahead.zip,快速、轻量级的预输入增强文本输入。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的...
Twitter Typeahead库周围的简单Angular.js指令包装。 入门 从您最喜欢的来源获得尖角输入: 用安装: $ bower install angular-typeahead 用安装: $ npm install angular-typeahead 下载最新的或 。 注:角预...
6. **错误处理**:当用户输入无效值时,可以显示相应的错误提示。 7. **国际化支持**:适应不同的语言环境,方便全球化的应用。 8. **自定义事件**:提供丰富的事件回调,如onSelect、onInputChange等,方便开发者...