Хорошо, у меня есть обычная карта google с кластерными маркерами. У меня есть некоторые переменные, чтобы заполнить всплывающие окна для каждого маркера. В принципе, некоторым всплывающим окнам потребуется множество различных полей данных. Если одна из переменных, заполняющих всплывающее окно для маркера, удалена, я остаюсь с результатом "undefined", и я бы предпочел не просто разместить там пробел, если для этого нет данных.
Я чувствую, что есть очень простое решение, и я просто спотыкаюсь о синтаксисе. Мне просто нужно что-то сказать, если этот var "data.locations [i].ALbed" возвращает undefined, display: none
графический маркер выглядит следующим образом:
{"longitude": -81.489682, "широта": 41.414132, "id": "5352", "name": "Sabre Health Care Group", "loaction": "Hendricks County, IN", "operator": "Услуги по уходу за жизнью", "объект": "SNF & AL", "SNbed": "XX", "ALbed": "XX",}
всплывающий скрипт выглядит так:
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
var contentTxt = '<b>' + data.locations[i].name + '</b>' + '<br />'
+ data.locations[i].loaction + '<br />Operator: ' + data.locations[i].operator + '<br />Facility: '
+ data.locations[i].facility + '<br />SN beds: '+ data.locations[i].SNbed + '<br /> AL beds: ' + data.locations[i].ALbed;
infowindow.setContent(contentTxt);
infowindow.open(map, marker);
}
})(marker, i));
markers.push(marker);
}
var markerCluster = new MarkerClusterer(map, markers);
}
текущую карту можно увидеть здесь: http://neiltanderson.com/test/
Любая помощь приветствуется
Что-то вроде этого
var context2 = '';
['name', 'location', 'facility'].forEach(function (n) {
if (data[n]) {
context2 = context2 + '<b>' + n + '</b><br/>' + data[n] + '<br/>';
}
});
здесь, в jsfiddle
Это проверяет, не указана ли переменная. Затем вы можете сделать свою логику.
var someVar;
typeof(someVar) === 'undefined' ? console.log('is undefined') : console.log('is defined');
// Will log "is undefined" in this case
Изменение: вы также можете сделать что-то подобное
var contentTxt;
if(data.locations[i].name !== 'undefined') {
contentTxt += '<b>' + data.locations[i].name + '</b>';
}
...
infowindow.setContent(contentTxt);