我有一个Google Map应用程序,该应用程序将标记信息从数据库中提取并将其写入JSON文件。GoogleMaps加载JSON并创建点等。根据JSON类型字段,我可以选择自定义图标。如果用户进入其他类型或在字段中放置空间,则会打破地图。
我想设置一个默认标记图标,以在JavaScript选择器中不在数据库中的空格和新类型。理想情况下是通配符或默认图标。我可以用MySQL修剪空格,并以提交表单中的输入类型限制输入类型。将其应用于GoogleMap JS似乎更灵活。它将允许新类型而无需编码自定义图标。
我的JavaScript代码来自Google Maps API:
// set the base url for icons
var iconBase = '/kml/icons/';
var icons = {
Camping: {
icon: iconBase + 'camping.png'
},
Access: {
icon: iconBase + 'boat-ramp.png'
},
Showers: {
icon: iconBase + 'shower.png'
}
/* to deal with spaces and types not included above *
%wildcard%: {
icon: iconBase + 'red.png'
}
*/
};
和JSON看起来像这样:
var siteData =[
{
"id":"13",
"name":"Banks",
"river":"Payette",
"type":"Access",
"lat":"44.085070",
"lng":"-116.115750"
},
{
"id":"57",
"name":"Slides",
"river":"Pack River",
"type":"Camping ",
"lat":"48.127099",
"lng":"-116.604248"
},
{
"id":"58",
"name":"Cold Springs",
"river":"Payette",
"type":"",
"lat":"48.127099",
"lng":"-116.604248"
},
第二个和第三个实例,第二个有空间,第三个在类型字段中为空白。这些会破坏地图。
没有方法来定义默认值,而对象[" somePropertyname"]不确定naive javaScript。
到目前为止,JavaScript尚未支持将正则表达式用作属性名称。
(或者可能是是,但我不知道。(
我猜属性:google.maps.marker的图标是当数据类型与图标不匹配时打破地图的原因。
Google地图API文档的示例代码:
var marker = new google.maps.Marker({
position: feature.position,
icon: icons[feature.type].icon,
map: map
});
在您的情况下,当数据类型为"露营"或"时,图标[feature.type]不确定。和图标[feature.type] .icon(= undefined.icon(将打破地图。
如果我猜,您可以更改您的Google.maps.marker,如下:
var marker = new google.maps.Marker({
position: feature.position,
icon:icons[feature.type] ? icons[feature.type].icon : '',
map: map
});
或
var marker = new google.maps.Marker({
position: feature.position,
icon:function(){
/* some conditions*/
}(),
map: map
});