2015-02-26 3 views
0

У меня есть серия местоположений, возвращающихся в массив в JavaScript, который я рисую на карте Google.если элемент массива условный внутри цикла

Я пытаюсь изменить тип значка маркера в зависимости значения на одном из элементов массива, как так

for (i = 0; i < locations.length; i++) { 
    marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
    map: map, 
    if (locations[i][3] == "Yes") { 
     console.log("yes") 
    } else { 
     console.log("no") 
    } 
    }); 

    google.maps.event.addListener(marker, 'click', (function(marker, i) { 
    return function() { 
     infowindow.setContent(locations[i][0]); 
     infowindow.open(map, marker); 
    } 
    })(marker, i)); 
} 

но работает в

Uncaught SyntaxError: Unexpected token (

Что мне не хватает?

+0

Да, это работает, но я должен был быть более конкретным: в новом google.maps.Marker ({Мне нужно установить значок: '/img/a.png' или значок: '/ img/b.png 'в зависимости от значения местоположений [i] [3] –

+1

вы можете использовать функцию самоисполнения, такую ​​как http://jsbin.com/tacoro/2/edit?js,output, или использовать тройной оператор http://jsbin.com/tacoro/3/edit?js,output –

+0

perfect - спасибо –

ответ

2

Что мне не хватает?

Ты ставишь код потока в середине объекта инициализаторе:

for (i = 0; i < locations.length; i++) { 
    marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
    map: map, 
    if (locations[i][3] == "Yes") {  // ==== 
     console.log("yes")    // ==== 
    } else {       // ==== Here 
     console.log("no")     // ==== 
    }         // ==== 
    }); 

    google.maps.event.addListener(marker, 'click', (function(marker, i) { 
    return function() { 
     infowindow.setContent(locations[i][0]); 
     infowindow.open(map, marker); 
    } 
    })(marker, i)); 
} 

Вы не можете сделать это. Я не уверен, что вы пытаетесь сделать там Вы отправили уточняющий комментарий:

в рамках новой google.maps.Marker ({Мне нужно, чтобы иметь возможность установить иконку: «/ IMG/a.png»или значок:„/img/b.png“в зависимости от значения местоположения [я] [3]

Так что мое предположение о собственности было правильно: Вы можете сделать это с условный оператор:

marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
    map: map, 
    icon: locations[i][3] == "Yes" ? '/img/a.png' : '/img/b.png' 
}); 

... где Валу в icon в отеле e будет '/img/a.png', если это правда, или '/img/b.png' если нет.

+0

Это тоже отлично сработало –

+1

Я собираюсь принять это на основании его более кратким –

Смежные вопросы