【问题标题】:Javascript - Different markers for different typesJavascript - 不同类型的不同标记
【发布时间】:2013-05-20 03:26:33
【问题描述】:

我正致力于在地图上自定义 Google 标记。搜索单个区域后,结果会返回带有餐厅、公园和聚会标记的地图。我试图根据结果的类型给出不同的标记图标。因此,我在 addMarker 函数 (whatami) 中添加了一个“类型”参数,并根据情况切换到正确的标记。但是,没有任何标记出现。

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 语句,它工作正常。谁能发现我哪里出错了?

【问题讨论】:

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


    【解决方案1】:

    乍一看,我会说您不必要地加倍了引号,而且您还没有在函数中将 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);
    };
    

    【讨论】:

    • 谢谢。你的代码让我的标记出现了;但是它们都是谷歌提供的默认标记,而不是我的自定义标记。我想知道为什么这不起作用...这就是我在代码中设置参数的方式。这是正确的吗? addMarker(,,'','rest');
    • 我不会说 Ruby,但如果 lat、long 和 title 都设置好了,我不明白为什么最后的 whatami 字符串不会通过。试试图片的绝对 URL 怎么样?
    【解决方案2】:

    “'/assets/parkmarker.png'”处的错字。去掉双引号。

    【讨论】:

    • 检查图片的网址。你可能是404ing。 addMarker 是否在其他地方被调用?
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多