Javascript三元运算符

时间:2011-08-06 18:57:27

标签: javascript

我正在为谷歌地图创建两个不同的图标。 但是只显示一个图标。 一个名为facility的下拉选择将允许一个基于值'8'的图标,所有其他值将创建另一个图标。

var marker = createMarker(latlng, name, address, city, state, zipcode, telephone, images, url, facility);


function createMarker(latlng, name, address, city, state, zipcode, telephone, images, url, facility) { 
  var html = "<div id='infodiv'>" + name + "<br/><h4>" + address + "<br/>" + city + ", " + state + " " + zipcode + "<br/>" + (formatPhone(telephone)) + "</h4><div class='infoimage'><img src='" + images + "'></div><div class='footer'><a href='http://" + url + "'>" + url + "</a></div></div>";
  var marker = new google.maps.Marker({
    icon: icon2,
    icon: (facility == 8) ? icon : icon, 
    map: map, 
    position: latlng 
  });

这是图标:

var icon = new google.maps.MarkerImage("./images/plum_flag.png", 
new google.maps.Size(35, 52), new google.maps.Point(0, 0), 
new google.maps.Point(0, 52));
//callup the orange icon
var icon2 = new google.maps.MarkerImage("./images/orange_flag.png", 
new google.maps.Size(26, 39), new google.maps.Point(0, 0), 
new google.maps.Point(0, 39));

唯一显示的图标是'var icon = new google.maps.MarkerImage(“./ images / plum_flag.png”,'无论选择选项是什么......

2 个答案:

答案 0 :(得分:5)

(facility == 8) ? icon : icon,

表示:如果facility8,请使用icon,否则请使用icon。不是很有用,因为总是使用icon

相反,你可能想要:

(facility == 8) ? icon : icon2,

您可能会感到困惑,icon指的是您设置的上一个icon: icon2。但是,两个icon都指的是完全相同的东西,所以你不会看到任何差异。

由于您使用三元运算符定义icon,因此第一个icon:定义也可以省略(第二个icon:定义无论如何都会覆盖它。)

答案 1 :(得分:2)

这是错误的:

  icon: icon2,
  icon: (facility == 8) ? icon : icon, 

你要分配两次图标,而在第二种情况下,两种情况都是一样的。