【问题标题】:Google GeoCode Autocomplete limit State谷歌地理编码自动完成限制状态
【发布时间】:2014-02-19 04:40:20
【问题描述】:

我正在尝试将 Google 地理编码自动完成字段添加到我的表单中。

我已经能够使用它来限制返回到国家 (AU) 的结果,但如果我也可以将结果限制在州内,那就更好了。 (新南威尔士州/新南威尔士州)

这是我当前的initialize() 函数:

function initialize() {
var options = {
types: ['geocode'],
    componentRestrictions: {country:"AU"}
};
  autocomplete = new google.maps.places.Autocomplete(
  (document.getElementById('autocomplete')),options);
  google.maps.event.addListener(autocomplete, 'place_changed', function() {
  fillInAddress();
  });
}

我已阅读文档,发现您可以使用types 参数来限制结果,但我一直无法计算出确切的代码应该是什么。

只需将其更改为:

types: ['administrative_area1':'NSW'], // OR 'New South Wales'

并且与上述类似的各种组合(= 而不是 : 等)都不起作用..

有人能指出我想要实现的实际语法的正确方向吗?

谢谢。

【问题讨论】:

  • 当您阅读文档后,您也应该阅读以下内容:目前,您可以使用 componentRestrictions 按国家/地区进行过滤
  • 我做到了。我已经实现了那部分并说它有效。我要问的是我可以进一步过滤它以仅显示特定州(新南威尔士州)内的结果。
  • 如果可以按州过滤,他们会写您可以使用componentRestrictions 按国家/地区和州过滤。
  • 来自 API 页面:您可以通过传递 types 参数来将 Place Autocomplete 请求的结果限制为特定类型。该参数指定类型或类型集合,如下面支持的类型中所列。支持的类型是: ... Administrative_area1 对于澳大利亚,administrative_area1 是州。我只是好奇如何使用类型参数来限制返回的状态。
  • 请仔细阅读文档。 支持的类型有:geocode, establishment, (cities)(regions),仅此而已。 types-property 可能不用于指定类型的值(例如特定区域),它仅用于将结果过滤为包含特定组件(例如区域)的结果,它不关心值这个组件的。

标签: jquery google-maps google-maps-api-3 autocomplete google-geocoder


【解决方案1】:

在您的应用中保留一份状态纬度/经度边界列表,并使用它们限制自动完成。

    var stateBounds={
        ca: ["32.812736", "-119.216815", "34.608128", "-117.039301"]
        // lat/long boundaries list for states/provinces.
    };

    function getStateBounds(state) {
        return new google.maps.LatLngBounds(
          new google.maps.LatLng(stateBounds[state][0], 
                                 stateBounds[state][1]), 
          new google.maps.LatLng(stateBounds[state][2], 
                                 stateBounds[state][3])
        ); 
    }

    new google.maps.places.Autocomplete(document.getElementById('search'), {
        types: ['address'],
        componentRestrictions: {country: 'us'},
        bounds: getStateBounds('ca') // get LatLngBounds for ca.
    });

【讨论】:

  • 这是限制特定状态的最佳方法。干杯!
  • @Conard Warhol,我为“马里兰”尝试了同样的方法,但没有成功,请您帮忙。它为 ca Hera 工作的是我用于马里兰州的坐标 - var stateBounds={ md: ["39.0457549", "-76.64127119999999"] // 州/省的纬度/经度边界列表。 };
  • md: [ "37.8889", "-79.4861", "39.722", "-74.8581"] 应该可以工作。
  • 就我而言,这个配置还不够。另外我必须附加strictBounds: true。所以根据谷歌码头,这个选项完全限制了你提供的矩形搜索
【解决方案2】:

我使用没有任何过滤器的自动完成功能,但在发送查询之前会自动将我感兴趣的状态附加到所有用户输入中。

例如,对于想要加利福尼亚州结果的人,如果他们要搜索 Sacramento,它会自动将输入更正为 Sacramento, California,这对我来说效果不错。您可以更具体地使用您发送的数据,例如Sacramento, California, USA

【讨论】:

  • 我知道这是一个旧答案,但仍然没有提供任何默认状态过滤。我想知道,你在哪个点/地方附加了国家?如果 init 函数调用是 autocomplete = new google.maps.places.Autocomplete(document.getElementById 'idAcInput'),这似乎是在连续读取数据。你把文本挂在哪里?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-14
  • 1970-01-01
  • 2013-03-18
  • 2019-04-07
相关资源
最近更新 更多