Google Maps API V3:奇怪的 UI 显示故障(附截图)

Posted

技术标签:

【中文标题】Google Maps API V3:奇怪的 UI 显示故障(附截图)【英文标题】:Google Maps API V3 : weird UI display glitches (with screenshot) 【发布时间】:2011-11-20 06:32:21 【问题描述】:

任何对导致谷歌地图 UI 组件出现这种奇怪故障的原因有任何想法的人,非常感谢您的来信!

地图是通过以下方式创建的:

        var options = 
        zoom: <?php echo $this->zoom ?>,
        center: new google.maps.LatLng(<?php echo $this->centre_lat ?>, <?php echo $this->centre_lon ?>),
            mapTypeControl: false,
            mapTypeId: google.maps.MapTypeId.ROADMAP                
        ; 

        var map = new google.maps.Map(document.getElementById('map_canvas'), options);

即使没有标记,故障也是一样的。

【问题讨论】:

【参考方案1】:

我们遇到了同样的问题。 css 设计师使用的是这种风格:

style.css

img max-width: 100%; 

我们没有禁用缩放控件,而是通过覆盖 map_canvas 元素的 img 样式来解决问题,如下所示:

style.css:

#map_canvas img  max-width: none; 

缩放控件现在可以正确显示。

设置“img max-width:100%”是响应式/流畅网站设计中采用的一种技术,以便在调整浏览器大小时按比例调整图像大小。显然,一些 CSS 网格系统已经开始默认设置这种样式。更多关于流体图像的信息在这里:http://www.alistapart.com/articles/fluid-images/ 不知道为什么这与谷歌地图冲突......

【讨论】:

这也影响了我。 Google Maps API v3 使用大尺寸透明 png 精灵图像 (http://maps.gstatic.com/mapfiles/iw3.png),该图像放置在带有 overflow: hidden 的父容器内。因此,限制图像的宽度会导致图像被压缩。【参考方案2】:

使用最新版本的 google maps api 你需要这个:

<style>
  .gm-style img  max-width: none; 
  .gm-style label  width: auto; display: inline; 
</style>

【讨论】:

这与公认的解决方案相同,但使用不同的选择器并额外重置您自己的标签样式。【参考方案3】:

看起来缩放控件有问题。尝试将zoomControl:false 添加到您的选项中。

事实上,正常的缩放滑块似乎位于页面的左侧(使用 Firebug > Inspect Element)。可能是 CSS 冲突?

【讨论】:

好的,找到了。这是我的img max-width: 100%; 我面临同样的问题,并在删除 css imgmax-width:100%; 后修复【参考方案4】:

我已经解决了这个问题:

在您的 CSS 中,您添加了如下内容:

img max-width: 100%; height: auto;

尽量不要让它成为全球性的,它应该可以解决你的问题:)

【讨论】:

【参考方案5】:

这对我有用:

#map img  max-width: none !important;  (from Patrick's answer)

属性“!important”确保覆盖任何其他样式,#map 是在声明新对象 Gmaps 时分​​配的 id:

<script>
    map = new GMaps(
          div: '#map',           <-  your id
          lat:  *******,
          lng:  *******,
          scrollwheel: false,
          panControl: true,
          ....
          ...
</script>

【讨论】:

【参考方案6】:

如果您使用 Dreamweaver 流体网格功能,您的默认设置应如下所示:

img, object, embed, video 
    max-width: 100%;

/* IE 6 does not support max-width so default to width 100% */
.ie6 img 
    width:100%;

试试这个:

object, embed, video 
    max-width: 100%;

#map_canvas img  max-width: none; 
/* IE 6 does not support max-width so default to width 100% */
.ie6 img 
    width:100%;

只需按原样替换代码即可。

【讨论】:

【参考方案7】:

Bootstrap(从 2.3.2 版开始)以与接受的答案相同的方式混淆图像。

其实我怀疑Haroldo的网站使用的设计使用了Bootstrap。

我只是发布此内容,因为没有其他人提到 Bootstrap,并且有人可能正在寻找特定于 Bootstrap 的解决方案。

【讨论】:

【参考方案8】:

我在 Square Space 网站上遇到了这个问题。我无权访问 CSS 样式表。由于您嵌入的是 html 文档,因此您可以使用内联 CSS 来解决问题。我修改了容器的样式,而不是进行站点范围的更改(我不能这样做)。这是我所做的:

<style>
  html, body, #map-canvas 
    height: 600px;
    width: 100%;
    margin: 0px;
    padding: 0px
  
  #map-canvas img max-width: none;
</style>

【讨论】:

以上是关于Google Maps API V3:奇怪的 UI 显示故障(附截图)的主要内容,如果未能解决你的问题,请参考以下文章

Google Maps API V3 中的 API 密钥是啥?

google maps js v3 api教程 -- 在地图上添加标记

Google Maps v3 - 防止 API 加载 Roboto 字体

google maps js v3 api教程 -- 创建一个地图

Google Maps API V3 错误:RefererDeniedMapError

在 maps.google.com 上的缩放比在 Google Maps API v3 上更流畅