【发布时间】:2011-11-16 21:53:32
【问题描述】:
我有一个 MapHandler 类。
我创建了一个对象 myMaphandler = new MapHandler 并调用了初始化方法。 但是 @userLocationMarker.getPosition() 返回 null :(
如果我要评论警报并从 Chrome JS 控制台调用 @userLocationMarker.getPosition(),我会得到必要的坐标。
class window.MapHandler
initialize: (centerLocation) ->
@makeMap(centerLocation)
@defineUserLocation()
alert @userLocationMarker.getPosition()
makeMap: (centerLocation) ->
myOptions =
zoom: 14
center: centerLocation
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: () ->
@userLocationMarker = @placeMarker(null, null)
handleMap = (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.setPosition(pos)
if navigator.geolocation
@userPosition = navigator.geolocation.getCurrentPositon(
handleMap
)
为什么会发生这种情况,我应该怎么做才能避免这种情况?
【问题讨论】:
-
只是为了澄清.. console.log(@userLocationMarker.getPosition()) 给你正确的数据?我觉得您的帖子中缺少某些内容...您在使用图书馆吗?
-
好的,getPosition 到底是在哪里定义的?
-
这是一个 Google Maps API 和 Marker 类的这个方法。
-
当我从 JS 控制台调用 myMapHandler.userLocationMarker.getPosition() 我得到:Q Pa: 54.7242243 Qa: 20.46035059999997 proto: Q
-
好吧,当您在尝试提醒它之前调用 defineUserLocation 时,您将 userLocationMarker 设置为 null... @userLocationMarker = @placeMarker(null, null) 我不知道它会在哪里换到你的位置。如果不亲自进行实际测试,就很难解决这样的问题。发出警报以确保您的位置正在设置中。
标签: javascript variables closures coffeescript