如何在JavaScript中的变量中包装字符串值

时间:2014-09-09 14:15:35

标签: javascript jquery leaflet

在下面的函数中,我使用选定的图标

绘制标记
function addMarkers(name) {
   var iconVal = "";
   if(name == 'default'){
    iconVal = defaultIcon;
   }
   else if(name == 'school'){
        iconVal = 'schoolIcon';
   }

   marker = new L.Marker(new L.LatLng(a[0], a[1]), { icon: iconVal });
}

我的问题是我如何传递上面的变量iconVal。是否有像Html.Raw那样的功能?

2 个答案:

答案 0 :(得分:2)

请勿对这些内容使用变量名称。使用具有可通过名称访问的属性的对象:

var icons = {
    default: new L.Icon.Default(),
    school: L.icon({
        iconUrl: '@Url.Content("~/Content/custom/schoolpin.png")',
        iconSize: [32, 50],
        iconAnchor: [16, 50], 
        popupAnchor: [-3, -76] 
    }),
    test: L.icon({
        iconUrl: '@Url.Content("~/Content/custom/testpin.png")',
        iconSize: [32, 50],
        iconAnchor: [16, 50], 
        popupAnchor: [-3, -76] 
    })
};

function addMarkers(name) {
   var iconVal = icons[name];
   var marker = new L.Marker(new L.LatLng(a[0], a[1]), { icon: iconVal });
}

答案 1 :(得分:0)

如果图标是全局变量(并且我不建议它们应该是;只是听我说),你可以像这样访问变量:

   marker = new L.Marker(new L.LatLng(a[0], a[1]), window[icon].iconVal);

动态访问局部变量并不是那么简单,因此使用iconVal来保存整个图标对象,而不是"指针"。这假设addMarkers可以直接访问本地图标对象。

function addMarkers(name) {
  var icon;
  if(name == 'default'){
    icon = defaultIcon;
  }
  else if(name == 'school'){
    icon = schoolIcon;
  }

  marker = new L.Marker(new L.LatLng(a[0], a[1]), icon.iconVal);
}