У меня есть форма, которая реализует карту Google с помощью библиотеки мест Google (demo, как в стороне, в JSFiddle, если я добавлю gmaps.js в качестве сценарий ссылки он не будет работать, но если добавить его в качестве элемента сценария в разделе HTML точно такой же сценарий прекрасно работает), который выглядит так:Ошибка «слишком много рекурсии» с Google Maps + библиотека мест
<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>
Со следующим 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());
}
});
Когда вы вводите что-то в поле поиска (например, «Slim's»), вы увидите набор предложений из библиотеки 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,...
То, что я с трудом разработки почему. Код, который находится в этой демонстрации, является подмножеством кода в моем проекте, но оба представляют ту же проблему. Я не могу найти какую-либо информацию об ошибке в Google Местах или отключении API Карт Google, и, тем не менее, этот еще один код работал еще 2 недели назад (время, когда я его написал). Любые идеи о том, как я мог бы хотя бы изолировать проблему?
Вы также могли использовать 'map.setCenter (location.lb, location.mb);' :) –
Зачем вам когда-либо рекомендовать использование недокументированных свойств объекта (что такое .lb и .mb)? Он снова сломается в следующий раз, когда Google нажимает новую версию (или может). – geocodezip