在 Google 地方信息自动完成中添加自定义默认地方

Posted

技术标签:

【中文标题】在 Google 地方信息自动完成中添加自定义默认地方【英文标题】:Add Custom Default Places In Google Places AutoComplete 【发布时间】:2016-07-26 13:54:58 【问题描述】:

我想使用 Google Places API 自动完成输入。这是我的代码:

var options = 
    componentRestrictions: 
      country: "de"
    
  ;
var place = '';

  var locationAutocompleteOneWay = document.getElementById('locationAutocompleteOneWay');
  var autocompleteLocationOneWay = new google.maps.places.Autocomplete(locationAutocompleteOneWay, options);
  google.maps.event.addListener(autocompleteLocationOneWay, 'place_changed', function() 
    place = autocompleteLocationOneWay.getPlace();
  );

为了更多自定义,我想在文本框中输入时添加一些自定义位置结果。这是我的代码和结果:

setTimeout(function() 
    $(".pac-container").append('<div id="areasearch" class="pac-item areasearch"><span class="pac-icon pac-icon-areas"></span><span class="pac-item-query"><span class="pac-matched"></span>Test place</span> <span>custom place</span></div>');
  , 500);

但我希望当我点击结果时,它使我的输入locationAutocompleteOneWay 具有结果的值。但我不知道怎么做。我希望它可以在页面上申请多输入。我通过 jQuery 和 AngularJS 使用它。 Jquery 和 AngularJS 的所有解决方案都对我有好处。提前致谢。

【问题讨论】:

你解决了这个问题吗? 【参考方案1】:

我发现,如果您使用可用于设置 lat/lng(以及您需要的任何其他内容)的属性加载要添加的自定义位置,那么您可以绑定到 mousedown 事件以分配自定义放置对象到自动完成。

在我的脚本中,我有以下 sn-p 向自动完成添加项目(这会添加到页面上的所有自动完成元素):

$(".pac-container").append('<div id="areasearch' + i + '" class="pac-item areasearch custom" val="' + PlaceName + '" lat="' + Latitude + '" lng="' + Longitude + '" style="display: none;"><span class="pac-icon pac-icon-areas"></span><span class="pac-item-query"><span class="pac-matched"></span>' + PlaceName + '</span> <span>' + LocationName + '</span></div>');

使用 pac-item 和 custom 类,然后按如下方式绑定:

        setTimeout(function () 
            $("div.pac-item.custom").mousedown(function () 
                setCustomLocation($(this));
            )
        , 100);

而自定义定位功能是:

 setCustomLocation = function (obj) 
        $("#" + currInput).val($(obj).attr("val"));
        var newObj = ;
        newObj["geometry"] = 
        newObj["geometry"]["location"] = 
        newObj["geometry"]["location"]["lat"] = function ()  return $(obj).attr("lat"); 
        newObj["geometry"]["location"]["lng"] = function ()  return $(obj).attr("lng"); 
        currAutocomplete.set("place", newObj);
    

第一行将名称设置到活动输入字段中,其余行设置活动自动完成的位置对象(在其他事件中捕获的两个变量)。该项目需要的唯一值是几何 lat/lng 对,但如果您需要更多值,只需使用您需要从父级检索的任何值加载它。

【讨论】:

以上是关于在 Google 地方信息自动完成中添加自定义默认地方的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 swift 将 google 地方自动完成功能添加到 xcode(教程)

iOS 上的 Google 地方信息自动完成功能 - 无法加载搜索结果 - 再试一次

Google 自定义搜索自动填充功能仅针对选定的字词

Google 地方信息自动填充功能未显示

在 Meteor 中使用 Google 地方信息自动填充功能

Google 表单 - 使用 Google Apps 脚本在项目中添加自定义按钮“更多信息”