未捕获的参考错误addMarker未定义

时间:2013-07-01 10:41:21

标签: jquery google-maps

我正在尝试使用Google Maps API将标记添加到我的地图上。我在我的application.html.erb中调用脚本标记中的addMarker函数,我无法解释为什么函数在map.js中存在时没有定义。

看看下面的代码,我确信它是显而易见的,但我是网络开发的新手,并且已经在网上搜索了很长时间,无法看到我做错了什么。

非常感谢!

这是我的map.js ......

 $(document).ready(function(){


  function initialize() {
    var mapOptions = {
      center: new google.maps.LatLng(-34.397, 150.644),
      zoom: 8,
      mapTypeId: google.maps.MapTypeId.ROADMAP
  };

  var map = new google.maps.Map(document.getElementById("map-canvas"),
    mapOptions);

}

 function addMarker(latitude, longitude, title) {
        var marker = new google.maps.Marker({
          position:new google.maps.LatLng(latitude, longitude), 
          map : map, 
          title : title
        });
      }



google.maps.event.addDomListener(window, 'load', initialize);


});

这是我的application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>EventsMapper</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>

  <!-- <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> -->
  <script type="text/javascript"
  src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC74gnSe7p17ulcZUzgPJHxYurGg2bjRYg&sensor=false">
  </script>

  <script type="text/javascript">

      $(function() {
      // initMap();

      //add here var items that converts ToDoItems to JSON, take out the var to make to global

      <% Yoga.all.each do |item| %>

      addMarker(<%=item.latitude%>, <%=item.longitude%>, '<%=item.name%>');
      <%end%>
     });
  </script>

</head>

<body>
   <!--  <input type="text" id="autocomplete"> -->
   <div id='googlemap'>
    <div id="map-canvas">
    </div>
  </div>

    <%= yield %>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

因为您的添加标记功能是在文档就绪函数内写的。从文档就绪范围中删除该功能并将其放在外面。