Javascript -不同类型的不同标记

Javascript - Different markers for different types

本文关键字:同类型 Javascript      更新时间:2023-09-26

我正在定制地图上的谷歌标记。在搜索单个区域时,结果会返回一张带有餐馆、公园和聚会标记的地图。我试图根据结果的类型给出不同的标记图标。所以我添加了一个'type'参数到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语句,它工作正常。有人能指出我哪里出错了吗?

乍一看,你不必要地把引号加了两遍,而且你没有在函数中声明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);
};

typo at "'/assets/parkmarker.png'"。去掉双引号

谢谢大家。问题是标记被称为在2个不同的地方,我只把它添加到一个文件。将它添加到两者后,它就工作了。愚蠢的错误。