Google Maps自定义标记设置默认图标



我有一个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
});

相关内容

  • 没有找到相关文章

最新更新