Я пытаюсь использовать гем Google Maps for Rails для заполнения карты маркеры на основе пользовательского gmaps4rails_callback, который использует текущее местоположение, но я не могу получить код для замены маркеров, чтобы они срабатывали после определения геолокации пользователя.
Мой 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}) %>
Теперь я понимаю, что я, вероятно, выполняю геолокационный поиск дважды, используя как detect_location, так и вызов getCurrentPosition
, но в более ранней попытке код в gmaps4rails_callback
выполнялся до того, как разрешение на геолокацию из браузера (Safari) было завершено, поэтому Я думал, что это задержит выполнение до тех пор, пока место не будет определено.
Ранее я отображал карту без пользовательского gmaps4rails_callback
, и она работала нормально, поэтому я знаю, что мои файлы jQuery и JavaScript включаются без проблем.
Возможно ли, что Google Maps для Rails каким-то образом уже устанавливает свой собственный обратный вызов getCurrentPosition
, а мой игнорируется? После добавления журнала отладки не похоже, что nearby_locations
вообще вызывается.