首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 5:谷歌地图显示灰色

Rails 5:谷歌地图显示灰色
EN

Stack Overflow用户
提问于 2017-12-27 09:21:41
回答 1查看 43关注 0票数 0

我已经在一个选项卡中实现了一个google地图,用户可以在该选项卡上点击地图并获取地址。我唯一的问题是,当页面被加载时,地图看起来是灰色的,只有在我调整浏览器窗口的大小之后,地图才会正确显示。知道为什么会这样吗?

这是我的设置:

代码语言:javascript
运行
复制
#map_canvas
  height: 300px
  width: 100%
  margin: 0px
  padding: 0px


<div id="map_canvas"></div>
<script>
var map;
var geocoder;
var mapOptions = { center: new google.maps.LatLng(0.0, 0.0), zoom: 5,
    mapTypeId: google.maps.MapTypeId.ROADMAP };

function initialize() {
    var myOptions = {
        center: new google.maps.LatLng(38.89103282648849, -97.646484375),
        zoom: 5,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    geocoder = new google.maps.Geocoder();
    var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);
    google.maps.event.addListener(map, 'click', function(event) {
        placeMarker(event.latLng);
    });

    var marker;
    function placeMarker(location) {
        if(marker){ //on vérifie si le marqueur existe
            marker.setPosition(location); //on change sa position
        }else{
            marker = new google.maps.Marker({ //on créé le marqueur
                position: location,
                map: map
            });
        }
        document.getElementById('lat').value=location.lat();
        document.getElementById('lng').value=location.lng();
        getAddress(location);
    }

    function getAddress(latLng) {
        geocoder.geocode( {'latLng': latLng},
            function(results, status) {
                if(status = google.maps.GeocoderStatus.OK) {
                    if(results[0]) {
                        document.getElementById("address").value = results[0].formatted_address;
                    }
                    else {
                        document.getElementById("address").value = "No results";
                    }
                }
                else {
                    document.getElementById("address").value = status;
                }
            });
    }
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>

更新1

地图在一个选项卡内,这就是我想要适应resize的地方

代码语言:javascript
运行
复制
<script>
$('#tabs').on('click','.tablink,#prodTabs a',function (e) {
    e.preventDefault();
    var url = $(this).attr("data-url");

    if (typeof url !== "undefined") {
        var pane = $(this), href = this.hash;

        // ajax load from data-url
        $(href).load(url,function(result){
            pane.tab('show');
            google.maps.event.trigger(map, 'resize');
        });
    } else {
        $(this).tab('show');
    }
});
</script>
EN

回答 1

Stack Overflow用户

发布于 2017-12-27 13:09:07

只需在地图初始化结束时触发调整大小,它就会工作。

代码语言:javascript
运行
复制
google.maps.event.trigger(map, 'resize');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47989471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档