Google maps api 3 ';setMapTypeId';不使用自定义地图(谷歌地图)

Google maps api 3 ';setMapTypeId';不使用自定义地图(谷歌地图),google-maps-api-3,Google Maps Api 3,我有一套不同的地图类型(样式)。如您在简化的示例中所看到的,我尝试使用onClick事件来切换映射类型 这对于默认的google.maps提供的样式非常有用。但是,当我尝试切换到我的自定义样式时,我有大约2-3秒的延迟(本地环境),然后得到一个完全灰色的贴图(瓷砖上没有任何内容) 我知道贴图样式本身是有效的(与链接示例中的不同),因为它是我的初始贴图样式。因此,只有切换回我的自定义样式无效。遗憾的是,我在控制台中什么也没有,也不知道如何调试它 <?php // Inside the ini

我有一套不同的地图类型(样式)。如您在简化的示例中所看到的,我尝试使用onClick事件来切换映射类型

这对于默认的google.maps提供的样式非常有用。但是,当我尝试切换到我的自定义样式时,我有大约2-3秒的延迟(本地环境),然后得到一个完全灰色的贴图(瓷砖上没有任何内容)

我知道贴图样式本身是有效的(与链接示例中的不同),因为它是我的初始贴图样式。因此,只有切换回我的自定义样式无效。遗憾的是,我在控制台中什么也没有,也不知道如何调试它

<?php
// Inside the init(); function:
?>
var custom_style = [
     {
         featureType: 'water'
        ,stylers: [
             { hue: "#009ee0" }
            ,{ saturation: 100 }
            ,{ lightness: 0 }
         ]
     }
];
var CUSTOMMAPTYPE = new google.maps.StyledMapType( 
    custom_style, 
    // Options:
    { 
        alt: "Show Custom style",
        name: "custom" 
    } 
);

<?php
// Inside the view
$map_types = array(
     'Roadmap'
    ,'Terrain'
    ,'Satellite'
    ,'Hybrid'
    ,'CustomMapType'
);
foreach ( $map_types as $index => $type )
{
    ?>
    <span 
        class="map-type" 
        onClick="
                my_map.setMapTypeId( google.maps.MapTypeId.<?php echo strtoupper( $type ); ?> );
                // This is funny: I can access all mapType objects without a problem:
                console.log( my_map.mapTypes.<?php echo strtolower( $type ); ?> );
            " 
        id="<?php echo strtolower( $type ); ?>"
    >
        <?php echo $type; ?>
    </span>
    <?php
}
?>

通常,当您修改地图的属性时,比如说新的坐标或缩放,即使您更改容器(div)的大小,也应该触发名为
resize
的事件,这是避免此问题的唯一方法,现在,我不知道当您更改地图类型时这是否有效,但您应该尝试,代码如下所示:

    google.maps.event.trigger(map, "resize");

在事件的javascript部分,在设置映射类型后单击onclick。在你的例子中,你的物体不是map而是mymap,仔细考虑一下,我明白你的意思了。添加此选项的唯一优点是,在获得灰色贴图之前,现在的延迟更长:)。顺便说一句:切换回工作没有问题。我无法摆脱这种感觉,我的地图类型有某种问题……我添加了一个编辑:
console.log(my_map.mapTypes.),它显示我定义了。让对象可用。遗憾的是没有进展:当你选择自定义地图时,哪种类型的地图看起来很糟糕。它变成了纯灰色。当我单击触发默认/google映射类型的其中一个DOM元素时,它会毫无问题地切换回来。由于自定义类型是我的初始映射类型,并且显示良好(直到我单击元素),所以我无法调试任何东西,因为它看起来不像是错误。
    google.maps.event.trigger(map, "resize");