Javascript 谷歌地图呈现静态图像,而不是全功能地图

Javascript 谷歌地图呈现静态图像,而不是全功能地图,javascript,google-maps,google-maps-api-3,google-maps-markers,Javascript,Google Maps,Google Maps Api 3,Google Maps Markers,我遇到了一个非常奇怪的问题,它只能在我们的一个环境中重现。我试着调试它,发现只要画布的宽度为800px或更小,它就会渲染。但是,映射变得非交互式,我无法再通过map.getBounds()获取边界。指定的中心点也不会打印在地图上 这在我们所有的开发笔记本电脑上都能正常工作。当我们将它部署到测试环境中时,它就是不起作用。有没有人经历过这个问题 这是我通过电话发送的数据 var options = { "zoom": 16, "center": new google.maps.Lat

我遇到了一个非常奇怪的问题,它只能在我们的一个环境中重现。我试着调试它,发现只要画布的宽度为800px或更小,它就会渲染。但是,映射变得非交互式,我无法再通过map.getBounds()获取边界。指定的中心点也不会打印在地图上

这在我们所有的开发笔记本电脑上都能正常工作。当我们将它部署到测试环境中时,它就是不起作用。有没有人经历过这个问题

这是我通过电话发送的数据

var options = {
    "zoom": 16,
    "center": new google.maps.LatLng(37.808582967132, -122.41495248394),
    "mapTypeId": "roadmap",
    "disableDefaultUI": true,
    "scrollwheel": false,
    "draggable": false,
    "disableDoubleClickZoom": true
};

new google.maps.Map(document.querySelector('#map_canvas'), options);
API密钥是指定的,并且在开发笔记本电脑上使用相同的密钥,所以我不认为是这样,但谁知道呢


更新:
看起来,即使我减小容器元素的大小,它也只返回地图的静态图像,这就是为什么它不是交互式的,也是为什么它只在宽度最大为800px时渲染。我曾尝试在我们的生产环境和一些笔记本电脑中使用相同的API密钥,它们都工作得很好。它不能在我们现有的测试环境中工作。我已经仔细检查以确保API没有被初始化两次,并且我们正在使用V3API。下一个测试是复制整个环境,并更改域名,看看它是否受到谷歌的限制。我已经看到一些人由于互联网连接而出现问题,但我怀疑情况是否如此,因为无论互联网速度有多快,它都无法持续工作。

在花费大量时间运行实验后,我终于找到了解决我所面临问题的方法。我仍然不太清楚我为什么要这样做,但它似乎起到了作用

我忘了提到的关键不同点是,所有Javascript文件都是在映射无法正常工作的环境中缩小的。这意味着,由于脚本是在内部动态加载的,因此在加载Maps API之前,脚本的加载速度要快得多,而且可能会执行得更快。因此,我认为如果我注册回调,问题就会解决,但事实并非如此

最终,我设置了切换上下文的超时时间。到目前为止,这项工作非常可靠

setTimeout(function(){
    /*map loading logic*/
}, 1);

您应该添加更多关于您的工作/不工作环境的信息。还是这样?它在所有浏览器中都不起作用。唯一的区别是,它托管在EC2上。在同样的环境下,它也适用于几乎占据全屏的情况。在这种情况下,它被包装在一个有大小的div中,而地图画布本身的宽度/高度=100%。标记/CSS很重要,因为它决定了画布元素为维度继承了什么。@Jake我理解marker up/CSS很重要。然而,我不明白为什么只有在特定的环境中部署时它才起作用。