Вы инициализируете @userLocationMarker
с позицией null
:
@userLocationMarker = @placeMarker(null, null)
И затем вы устанавливаете «реальную» позицию в handleMap
:
handleMap = (position) =>
#...
@userLocationMarker.setPosition(pos)
, который используется как обратный вызов для getCurrentPosition
:
if navigator.geolocation
@userPosition = navigator.geolocation.getCurrentPosition(
handleMap
)
Проблема в том, что getCurrentPosition
является асинхронным, поэтому ваш alert
вызывается до того, как handleMap
был вызван getCurrentPosition
. Все, что зависит от того, что getCurrentPosition
делает, должно быть в обратном вызове handleMap
, или они должны быть готовы обрабатывать данные, которые еще не поступили.
В вашем примере кода также есть опечатка, которую вы написали getCurrentPosition
неправильно в блоке if navigator.geolocation
.
К тому времени, когда вы попробуете проверить позицию с консоли JavaScript, getCurrentPosition
вызвал handleMap
, и @userLocationMarker
будет правильно инициализировано.