在下面的函数中,我使用选定的图标
绘制标记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那样的功能?
答案 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);
}