将StyledMapType设置为overlayMapType

时间:2012-05-24 17:53:29

标签: google-maps-api-3

我创建了一个自定义的StyledMapType并将其插入google.maps.overlayMapTypes,以便在另一个图层上绘制此自定义地图。不幸的是,我有这个javascript错误消息:

  

未捕获的TypeError:无法调用undefined main.js的方法'apply':9
    (匿名函数)main.js:9
    d
    L main.js:9
    杜
    H. $
    (匿名函数)

以下是我在浏览器中执行的代码:

function initialize() {
  var pinkParksStyles = [
  {
    featureType: "all",
    stylers: [
      { saturation: -80 }
    ]
  },
  {
    featureType: "poi.park",
    stylers: [
      { hue: "#ff0023" },
      { saturation: 40 }
    ]
  }
  ];
  var pinkMapType = new google.maps.StyledMapType(pinkParksStyles,
    {name: "Pink Parks"});

  var mapOptions = {
    zoom: 11,
    center: new google.maps.LatLng(55.6468, 37.581),
    mapTypeControlOptions: {
      mapTypeIds: [google.maps.MapTypeId.ROADMAP]
    }
  };
  var map = new google.maps.Map(document.getElementById('map_canvas'),
    mapOptions);

  //Insert styled map in overlayMapTypes.
  map.overlayMapTypes.insertAt(0, pinkMapType);
  map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
}

要查看完整示例,请参阅jsfiddle代码:http://jsfiddle.net/X5r8r/460/ 您可以注意到,在此示例中,样式化地图用作mapType,但不用作overlayMapType。

谢谢, 弗朗索瓦

1 个答案:

答案 0 :(得分:0)

首先,我不确定你为什么要这样做。设置基本地图类型不是更容易吗? https://developers.google.com/maps/documentation/javascript/styling#styling_the_default_map

基本上,当您创建要在overlayMapTypes中使用的maptype时,需要定义getTile。查看此处的文档: https://developers.google.com/maps/documentation/javascript/maptypes#OverlayMapTypes StyledMap没有公开它。