Javascript - 不同类型的不同标记

时间:2013-05-20 03:26:33

标签: javascript ruby-on-rails ruby google-maps switch-statement

我正在努力在地图上自定义Google标记。搜索单个区域后,结果将返回带有餐馆,公园和聚会标记的地图。我试图根据结果的类型给出不同的标记图标。所以我在addMarker函数(whatami)中添加了一个'type'参数,根据具体情况,应切换到正确的标记。但是没有标记出现。

maps.js:

function addMarker(latitude, longitude, title, whatami) {

  switch (whatami) {
      case 'park':
      righticon = "'/assets/parkmarker.png'";
      break;

      case 'rest':
      righticon = "'/assets/restaurantmarker.png'";
      break;

      case 'meetup':
      righticon = "'/assets/meetupmarker.png'";
      break;
    }

  var markerLatlng = new google.maps.LatLng(latitude, longitude);
  var marker = new google.maps.Marker({
    position: markerLatlng,
    map: map,
    icon: righticon,
    title: title
  });
  markers.push(marker);
  latlng.push(markerLatlng);
};

createevent.js.erb:

<% @restaurants.each do |item| %>
    addMarker(<%= item.latitude %>,<%= item.longitude %>,'<%= item.name %>','rest');
 <% end %>
  <% @meetups.each do |item| %>
    addMarker(<%= item.latitude %>,<%= item.longitude %>,'<%= item.name %>','meetup');
 <% end %>
  <% @parks.each do |item| %>
    addMarker(<%= item.latitude %>,<%= item.longitude %>,'<%= item.name %>','park');
 <% end %>

如果我删除switch语句,它可以正常工作。谁能发现我哪里出错?

3 个答案:

答案 0 :(得分:0)

错误地写在“'/assets/parkmarker.png'”。删除双引号。

答案 1 :(得分:0)

快速浏览一下,我会说你的报价不必要地增加了一倍,你还没有宣布将righticon作为函数中的一个变量怎么样:

function addMarker(latitude, longitude, title, whatami) {
    var markerLatlng = new google.maps.LatLng(latitude, longitude);
    var markerSettings = {
        position: markerLatlng,
        map: map,   
        title: title
    }
    //  this way we still use the default marker when there is none set
    switch (whatami) {
        case 'park':
        markerSettings.icon = '/assets/parkmarker.png';
        break;

        case 'rest':
        markerSettings.icon = '/assets/restaurantmarker.png';
        break;

        case 'meetup':
        markerSettings.icon = '/assets/meetupmarker.png';
        break;
  } 
  var marker = new google.maps.Marker(markerSettings);
  markers.push(marker);
  latlng.push(markerLatlng);
};

答案 2 :(得分:0)

谢谢大家。问题是标记在两个不同的地方被调用,我只将它添加到一个文件中。将它添加到两者之后就可以了。愚蠢的错误。