[英]google maps custom markers setting default icon
我有一个谷歌地图应用程序,它从数据库中提取标记信息并将其写入 json 文件。 googlemaps 加载 json 并创建点等。根据 json 类型字段,我可以选择自定义图标。 如果用户输入不同的类型或在字段中放置一个空格,则会破坏地图。
我想设置一个默认标记图标来处理数据库中不在 javascript 选择器中的空格和新类型。 理想情况下是通配符或默认图标。 我可以用 mysql 修剪空格并限制提交表单中的输入类型。 在googlemap js中应用它似乎更灵活。 它将允许新类型而无需对自定义图标进行编码。
我来自谷歌地图 api 的 javascript 代码:
// 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"] 未由幼稚的 javascript 定义。
到目前为止,javascript 也不支持使用正则表达式作为属性名称。
(也许有,但我不知道。)
我猜 property:icon of google.maps.Marker 是数据类型与图标不匹配时破坏地图的原因。
google map api文档示例代码:
var marker = new google.maps.Marker({
position: feature.position,
icon: icons[feature.type].icon,
map: map
});
在您的情况下,当数据类型为“Camping”或“”时,icons[feature.type] 未定义。 而icons[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
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.