1

我正在用 ruby​​ on rails 制作一个应用程序,这是我的咖啡脚本文件之一,
我相信我的代码已正确缩进,但我仍然遇到错误。
我用下面的评论标记了给我错误的行。
请帮忙!

jQuery ->


    today_date = new Date()
    month = today_date.getMonth()
    day = today_date.getDay()


    pkpstyle= [
        featureType: "landscape.natural"
        elementType: "geometry"
        stylers: [
            lightness: -29
        ,
            hue: "#ffee00"
        ,
            saturation: 54
         ]
    ,
        featureType: "poi.park"
        stylers: [
            lightness: -35
        ,
            hue: "#005eff"
         ]
    ,
        featureType: "road.arterial"
    ,
        featureType: "road.arterial"
        stylers: [ lightness: 45 ]
     ]


    tempDay = 4
    //I get an error here saying Uncaught TypeError: undefined is not a function
    today_latlng = getLatlng(stops[tempDay])

    markericon = new google.maps.MarkerImage("/assets/cycling.png")
    myOptions =
        center: today_latlng
        zoom: 12
        minZoom: 4
        styles: pkpstyle
        mapTypeId: google.maps.MapTypeId.ROADMAP

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions)
    for i of stops
        latlng = getLatlng(stops[i].latlng)
        marker = new google.maps.Marker(
            map: map
            icon: markericon
            position: latlng
        )

    getLatlng = (loc) ->
        loc_split = loc.split(", ")
        lat = loc_split[0]
        lng = loc_split[1]
        new google.maps.LatLng(lat, lng)
4

1 回答 1

2

这个咖啡脚本:

today_latlng = getLatlng(stops[tempDay])
getLatlng = (loc) ->
    loc_split = loc.split(", ")
    lat = loc_split[0]
    lng = loc_split[1]
    new google.maps.LatLng(lat, lng)

或多或少与此 JavaScript 相同:

var today_latlng, getLatLng;
today_latlng = getLatLng(stops[tempDay])
getLatLng = function(loc) { ... };

因此,您确实有一个getLatLng变量,getLatLng(stops[tempDay])但是直到您尝试将其作为函数调用之后才为其分配值。在将其视为一个函数之前,您需要将其定义 getLatLng为一个函数:

getLatlng = (loc) ->
    loc_split = loc.split(", ")
    lat = loc_split[0]
    lng = loc_split[1]
    new google.maps.LatLng(lat, lng)
#...
today_latlng = getLatlng(stops[tempDay])

此外,如果stops是一个数组,那么你不应该使用of循环,你应该使用in循环

for p in stops
    latlng = getLatlng(p.latlng)
    #...

of循环与 JavaScript 循环相同,它可以对for ... in数组做一些有趣的事情,循环在 JavaScript 中以in循环结束,for(;;)并且在数组中表现良好。我不知道是什么stops所以这可能不适用,我只是根据它的使用方式和i索引变量来猜测。

于 2012-04-25T23:57:41.537 回答