Google地图自动搜索页面加载

Fer*_*mux 2 javascript jquery google-maps google-maps-api-3

我在我的网页上使用Google Maps API v3,当前加载页面时,搜索框会预先填充我选择的搜索字词.但我需要它实际上然后使用该术语搜索地图.我似乎无法使用谷歌的API找到任何方法,所以我想也许我可以使用此代码模拟"输入"键按下:

var e = jQuery.Event("keydown");
e.which = 13;
$("#pac-input").trigger(e);
Run Code Online (Sandbox Code Playgroud)

(#pac-input<input>地图上标签的ID )

然而,这似乎不起作用.

那么如何强制搜索页面加载?

编辑: 这是我正在谈论的搜索框 在此输入图像描述

Dr.*_*lle 7

您必须考虑的第一件事是不必触发哪个事件,知道何时触发事件更为重要.

预测将以异步方式加载,因此您必须等到它们可用.当预测可用时,不会触发任何事件,但您可能会观察到DOMNodeInserted身体的事件(将在那里插入下拉列表)并检查节点是否具有className'pan-item'(它是项目的className)在下拉列表中).

然后必须在输入上触发这些事件:

  1. keydown 使用keyCode:40(移至下拉列表中的第一个预测)
  2. keydown 使用keyCode:13(选择/激活预测)
  3. focus (激活输入)
  4. keydown 使用keyCode:13(发送请求)

例:

  var input          =  document.getElementById('pac-input'),
      ac              = new google.maps.places.SearchBox(input),
      itemsloaded    =  google.maps.event
                          .addDomListener(document.body,
                                          'DOMNodeInserted',
                                          function(e){ 
                            if(e.target.className==='pac-item'){
                              //remove the listener
                              google.maps.event.removeListener(itemsloaded);
                              //trigger the events
                              google.maps.event.trigger( input, 'keydown', {keyCode:40})
                              google.maps.event.trigger( input, 'keydown', {keyCode:13})
                              google.maps.event.trigger( input, 'focus')
                              google.maps.event.trigger( input, 'keydown', {keyCode:13})
                            }
                          });
Run Code Online (Sandbox Code Playgroud)

注意:在InternetExplorer中,DOMNodeInserted自V9以来支持-event,在旧版本和其他不支持此事件的浏览器中,如果.pac-item文档中存在,则可以间隔检查.

演示:http://jsfiddle.net/doktormolle/R8XdL/