Javascript 当地图图标已经通过条件数组调用时,如何调整其大小

Javascript 当地图图标已经通过条件数组调用时,如何调整其大小,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我的Marker[i][4]数组有两个值p&R(p表示红色图标,R表示蓝色图标),因此现在我想将红色图标的大小设置为蓝色图标的大尺寸 这是我的代码: 函数initMap(){ var映射; var bounds=new google.maps.LatLngBounds(); 变量映射选项={ mapTypeId:“路线图” }; //在页面上显示地图 map=new google.maps.map(document.getElementById(“map_canvas”),mapOption

我的Marker[i][4]数组有两个值p&R(p表示红色图标,R表示蓝色图标),因此现在我想将红色图标的大小设置为蓝色图标的大尺寸

这是我的代码:


函数initMap(){
var映射;
var bounds=new google.maps.LatLngBounds();
变量映射选项={
mapTypeId:“路线图”
};
//在页面上显示地图
map=new google.maps.map(document.getElementById(“map_canvas”),mapOptions);
地图.设置倾斜(45);
var标记=[];
var infoWindowContent=[];
我得到一个语法错误:

Uncaught SyntaxError: Unexpected token [
在这一行:

if(markers[i][4] == 'P'){ scaledSize: new google.maps.Size(20, 32)},

你不能把一个条件(if)语句放在一个对象的中间,就像你在你的问题中张贴的代码一样,或者你可以使用三元运算符:

marker = new google.maps.Marker({
  id: markers[i][0],
  position: position,
  map: map,
  title: markers[i][1],
  icon: { url: 'http://trivenialmirah.com/img/'+markers[i][4]+'.png',
  scaledSize: (markers[i][4] == 'P') ? new google.maps.Size(20, 32) : new google.maps.Size(11, 18)
  }, 
});

或者有条件地创建对象(图标对象,如下所示,或完整的MarkerOptions对象),然后使用它:

icon = { 
  url: 'http://trivenialmirah.com/img/'+markers[i][4]+'.png',
  // for Red Icon make small
  scaledSize: new google.maps.Size(11, 18)} 
};
if(markers[i][4] == 'P'){ 
  // for Blue Icon make small
  icon.scaledSize =new google.maps.Size(20, 32); 
}
marker = new google.maps.Marker({
  id: markers[i][0],
  position: position,
  map: map,
  title: markers[i][1],
  icon: icon
  }
});

代码片段(使用三元运算符):

函数initMap(){
var bounds=new google.maps.LatLngBounds();
变量映射选项={
mapTypeId:“路线图”
};
//在页面上显示地图
var map=new google.maps.map(document.getElementById(“map_canvas”),mapOptions);
var infowindow=new google.maps.infowindow();
//在我们的标记阵列中循环并将每个标记放置在地图上
对于(i=0;i“+this.getPosition().toUrlValue());
打开(地图,这个);
}
})(marker,i));
//自动将地图居中放置在屏幕上的所有标记上
映射边界(bounds);
}
//一旦fitBounds函数运行,就覆盖地图缩放级别(确保它只运行一次)
var boundsListener=google.maps.event.addListener((映射),'bounds_changed',函数(事件){
//这是setZoom(1);
google.maps.event.removeListener(boundsListener);
});
}
google.maps.event.addDomListener(窗口“加载”,initMap);
var标记=[];
var标记=[];
marker.push('id1');
marker.push('Palo Alto,CA');
推压标记(37.4418834);
推进标记(-122.1430195);
标记。推('P');
标记器。推(标记器);
var标记=[];
marker.push('id2');
marker.push(“加利福尼亚州山景镇);
标记器。推(37.3860517);
推压标记(-122.08385115);
标记。推('P');
标记器。推(标记器);
var标记=[];
marker.push('id3');
marker.push('Menlo Park,CA');
推压标记(37.4529598);
推进标记(-122.18172525);
标记。推('R');
标记。按(标记);
html,
身体,
#地图画布{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}


您的代码中有语法错误。您的条件在对象定义中。请描述此脚本的正确语法,请查看控制台中报告的错误。尊敬的Geocodezip先生,是的!现在它正在工作。非常感谢您的帮助。