使用Google地图+地点库获取"太多递归"错误

Jas*_*ske 6 javascript google-maps-api-3

我有一个用Google地方库实现谷歌地图的表格(演示,作为一个旁边,在JSFiddle,如果我添加gmaps.js作为脚本参考它将无法工作,但如果我将其作为脚本元素添加到HTML部分完全相同的脚本工作正常)看起来像这样:

<form action="#" method="post">
  <table class='Information table table-bordered'>
    <caption>Information</caption>
    <colgroup>
      <col width='100' />
      <col/>
    </colgroup>
    <tbody>
      <tr>
        <th>Location</th>
        <td>
          <div class="input-append">
            <input type="text" name="Lat" value="37.771424" />
            <span class="add-on">lat.</span>
          </div>
          <div class="input-append">
            <input type="text" name="Lng" value="-122.41332799999998" />
            <span class="add-on">lng.</span>
          </div>
        </td>
      </tr>
      <tr>
        <th>Map</th>
        <td>
          <div id="panel">
            <form class="form-search">
              <input type="text" class="input-medium search-query" autocomplete="off" id="target" placeholder="Search Box"/>
            </form>
          </div>
         <div id="ScavengerMap"></div>
        </td>
      </tr>
    </tbody>
  </table>
</form>
Run Code Online (Sandbox Code Playgroud)

使用以下JavaScript:

var input = document.getElementById('target'),
  searchBox = new google.maps.places.SearchBox(input),
  map = new GMaps({
    div: '#ScavengerMap',
    lat: 37.771424,
    lng: -122.41332799999998
  });
google.maps.event.addListener(searchBox, 'places_changed', function () {
  var places = searchBox.getPlaces(),
    location;
  if (places.length > 0) {
    location = places[0].geometry.location;
    map.removeMarkers();
    map.setCenter(location.jb, location.kb);
    map.addMarker({
      lat: location.jb,
      lng: location.kb,
      title: "Slim\'s",
      draggable: true,
      dragend: function (e) {
          var point = e.latLng;
          $('input[name=Lat]').val(point.lat());
          $('input[name=Lng]').val(point.lng());
      }
    });
    $('input[name=Lat]').val(location.jb);
    $('input[name=Lng]').val(location.kb);
  }
});

map.addMarker({
  lat: 37.771424,
  lng: -122.41332799999998,
  title: "Slim\'s",
  draggable: true,
  dragend: function (e) {
    var point = e.latLng;
    $('input[name=Lat]').val(point.lat());
    $('input[name=Lng]').val(point.lng());
  }
});
Run Code Online (Sandbox Code Playgroud)

当您在搜索框中输入内容时(例如"Slim"),您会看到Google商家信息库中的一系列建议.如果你选择一个,它应该在那个位置绘制一个标记,但我得到这两个错误:

too much recursion
[Break On This Error]   

...))};sa(fg[E],function(a){var b=this.ua,c=Sf(a);b[c]&&(delete b[c],O[m](this,vf,a...

{main,places}.js (line 26)
too much recursion
[Break On This Error]   

....route=function(a,b){Mf("directions",function(c){c.pi(a,b,!0)})};function P(a,b,...
Run Code Online (Sandbox Code Playgroud)

我正在努力解决的问题是为什么.此演示中的代码是我项目中代码的子集,但两者都存在相同的问题.我找不到任何有关Google地方信息库或Google Maps API中断的信息,而且我们仍然会在2周前(我写这篇文章的时候)完成相同的代码.关于我如何能够至少解决问题的任何想法?

Jas*_*ske 2

看来我想通了。看来属性.jb已经.kb改名了。lat抓取and的正确方法是在对象上lng调用.lat()and 。我的错误是过于密切地遵循示例:).lng()places[0].geometry.location