如何从ExtJS中的google.maps.places.autocomplete创建自动完成功能

时间:2015-01-08 11:50:50

标签: javascript extjs google-maps-api-3 autocomplete

如果我错了请纠正我... 在编辑这篇文章之前,我编写了一个没有错误的代码。 但在我阅读有关如何创建最小,完整和可验证示例的评论之后。我很困惑,因为我以前的最小脚本不起作用,我不能包含完整的代码,因为我的代码很复杂,而且我没有可验证的例子。

我只需要知道如何从google.maps.places创建自动填充功能,以便在EXTJS中自动填充我的文本字段。

先谢谢..

2 个答案:

答案 0 :(得分:1)

我已经从@Rob Schmuecker个答案中解决了这个问题。 因此,关于使用适当的代理从谷歌调用json的问题的焦点就像使用:

addressModel.getProxy().setExtraParam('url', 'http://maps.google.com/maps/api/geocode/json?address=' + queryString + '&sensor=false');

从这个数据模型中动态设置参数:

addressModel = Ext.define("Addresses", {
    extend: 'Ext.data.Model',
    proxy: {
        type: 'jsonp',
        url: 'https://jsonp.nodejitsu.com',
        reader: {
            type: 'json',
            root: 'results',
            totalProperty: 'totalCount'
        }
    },

    fields: ['formatted_address']
});

之后你可以创建一个组合框,并在每个keyup中为组合框添加监听器,以便在你的代理中调用extraparam。

这是来自@Rob Schmuecker的演示: https://fiddle.sencha.com/#fiddle/g70

这是Rob解决我问题的完整答案: Check This...

答案 1 :(得分:0)

我已经找到了一种方法来解决这个问题,使用Google Places-Library。

使用Ext JS 3.4的解决方案

1)整合Google Places API 2)创建一个自定义代理(我已经扩展了Ext.data.DataProxy)
2a)设置代理api(读:true)
2b)覆盖doRequest方法。在那里你可以调用google.maps.PlacesService.textSearch
2c)使用阅读器处理地方申请(我已经创建了自定义阅读器)
3)将您的数据存储在商店中(我创建了我的自定义商店)
4)创建消耗来自商店的数据的组件

请注意,您的应用必须遵守Google Maps / Google Earth API服务条款! (您必须出示徽标,第三方权利持有人等)。

你有它!