Javascript 谷歌地图呈现静态图像,而不是全功能地图
我遇到了一个非常奇怪的问题,它只能在我们的一个环境中重现。我试着调试它,发现只要画布的宽度为800px或更小,它就会渲染。但是,映射变得非交互式,我无法再通过map.getBounds()获取边界。指定的中心点也不会打印在地图上 这在我们所有的开发笔记本电脑上都能正常工作。当我们将它部署到测试环境中时,它就是不起作用。有没有人经历过这个问题 这是我通过电话发送的数据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
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很重要。然而,我不明白为什么只有在特定的环境中部署时它才起作用。