Я пытаюсь использовать гем Google Maps для Rails , чтобы заполнить карту маркерами, основанными на пользовательском gmaps4rails_callback, который использует текущее местоположение, но я не могу получить код для замены маркеры для срабатывания после определения географического местоположения пользователя.
My application.js
определяет функцию обратного вызова пользовательских карт вместе с обратным вызовом для getCurrentPosition
:
function nearby_locations(position) {
$.getJSON('locations/nearby.json',
{ lat: "33.7012", long: "-117.8683" },
function(data) {
Gmaps4Rails.replace_markers(data);
});
}
function gmaps4rails_callback() {
navigator.geolocation.getCurrentPosition(nearby_locations);
}
Пока что я использую жестко закодированные данные широты и долготы, но в конечном итоге собираюсь отключить реальные данные в переданном мне объекте position
. Выполнение вызова getJSON вручную работает нормально, и мой locations/nearby.json
возвращает данные о местоположении в правильном формате, который обновляет маркеры, как и ожидалось.
Мой шаблон просмотра просто использует
<%= gmaps("map_options" => {"auto_adjust" => true, "detect_location" => true}) %>
Теперь я понимаю, что я, вероятно, дважды выполняю гео-поиск, используя оба Detection_location и затем вызывая getCurrentPosition
, но в более ранней попытке код в gmaps4rails_callback
выполнялся до разрешения геолокации из браузера ( Safari) даже был завершен, поэтому я подумал, что это задержит выполнение, пока не будет определено местоположение.
Ранее я отображал карту без пользовательского gmaps4rails_callback
, и она работала нормально, поэтому я знаю, что мои файлы jQuery и JavaScript включены просто отлично.
Возможно ли, что Google Maps для Rails каким-то образом уже настроил свой собственный обратный вызов getCurrentPosition
, а мой игнорируется? После добавления некоторой регистрации отладки это не похоже на то, что nearby_locations
вызывается вообще.