Переменные привязки CoffeScript - PullRequest
1 голос
/ 12 ноября 2011

У меня есть класс

class window.MapHandler
  map = null
  userLocationMarker = null

  makeMap: (location) ->
    myOptions =
      zoom: 14
      center: location
      mapTypeId: google.maps.MapTypeId.ROADMAP
    @map = new google.maps.Map(document.getElementById("map_canvas"), myOptions)
  placeMarker: (location, icon_path) ->
    if icon_path
      markerImage = new google.maps.MarkerImage(icon_path, null, null, null, new google.maps.Size(25, 25))
    else
      markerImage = null
    marker = new google.maps.Marker(
      position: location
      map: @map
      icon: markerImage)

  defineUserLocation: () ->
    if navigator.geolocation
      navigator.geolocation.getCurrentPosition(
        (position) =>
          pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude)
          infowindow = new google.maps.InfoWindow(
            map: @map
            position: pos
            content: 'Если это не ваше местоположение - передвиньте маркер'
          )
          @map.setCenter(pos)
          @userLocationMarker = @placeMarker(pos, null)
      )
    alert @userLocationMarker.getPosition()

Почему в конце концов у меня есть центрированная карта и создатель в этой точке, но @userLocationMarker не определен и ошибка вызова метода getPosition?

1 Ответ

0 голосов
/ 12 ноября 2011

navigator.geolocation.getCurrentPosition - асинхронная функция.Его обратный вызов (где вы устанавливаете @userLocationMarker) запускается после вашего alert вызова.Например, вы можете также вставить свою строку alert в функцию обратного вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...