latlng не определен (пытается использовать геолокацию в браузере) (gmaps4rails v2)

map.js.coffee

jQuery ->
  getLocation = ->
    if navigator.geolocation
      navigator.geolocation.getCurrentPosition userPosition showError options
    else
      alert("Geolocation is not supported by this browser.")

  handler = Gmaps.build 'Google'
  handler.buildMap 
    provider: {}
    internal: {id: 'map'}
  , ->
    handler.panTo latlng

geolocation.js.coffee

userPosition = (position) ->
  latlng = new google.maps.LatLng(position.coords.latitude + "," + position.coords.longitude)
  alert(latlng)

showError = (error) ->
  switch error.code
    when error.PERMISSION_DENIED
      alert("User denied the request for Geolocation.")
    when error.POSITION_UNAVAILABLE
      alert("Location information is unavailable.")
    when error.TIMEOUT
      alert("The request to get user location timed out.")
    when error.UNKNOWN_ERROR
      alert("An unknown error occurred.")

options =
  enableHighAccuracy: false
  timeout: 5000

Я чувствую, что, может быть, я не понимаю глобальных переменных? Я пытался переместить getLocation звонить повсюду...

Я пытался положить все это в одном файле...

Я попытался переместить обработчик над (снаружи) jQuery функция ready..., которая выдает другую ошибку о _ не определен.

Я бросил alert(latlng) там просто чтобы посмотреть, ударил ли он даже по этой функции... это не так.

Я пробую новый гем gmaps4rails и немного борюсь. Я также проверил информацию в W3schools, к которой этот код довольно близок.

1 ответ

Решение

Не понимаю ваш код, но вот идея:

handler = Gmaps.build 'Google'
handler.buildMap { internal: {id: 'map'} }, ->

  positionSuccess = (position) ->
    handler.map.centerOn
      lat: position.coords.latitude
      lng: position.coords.longitude

  positionError = ->

  navigator.geolocation.getCurrentPosition(positionSuccess, positionError)
Другие вопросы по тегам