首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >谷歌地图地理编码:“谷歌没有定义”

谷歌地图地理编码:“谷歌没有定义”
EN

Stack Overflow用户
提问于 2016-04-05 10:36:16
回答 2查看 6.4K关注 0票数 1

当我试图加载这段代码时,我遇到了一个问题,我不知道为什么它不能工作.

代码语言:javascript
运行
复制
<script type="text/javascript">
    $(document).ready(function()
    {
        var geocoder = new google.maps.Geocoder();
        $(".textarea-autosize").autosize();

        geocoder.geocode({
            address: '{$order->address_delivery["address1"]},{$order->address_delivery["postecode"]},{$order->address_delivery["city"]}'
            }, function(results, status) {
            if (status === google.maps.GeocoderStatus.OK)
            {
                var delivery_map = new google.maps.Map(document.getElementById('map-canvas'), {
                    zoom: 10,
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    center: results[0].geometry.location
                });
                var delivery_marker = new google.maps.Marker({
                    map: delivery_map,
                    position: results[0].geometry.location,
                    url: 'http://maps.google.com?q={$order->address_delivery["address1"]},{$order->address_delivery["postcode"]},{$order->address_delivery["city"]}'
                });
                google.maps.event.addListener(delivery_marker, 'click', function() {
                    window.open(delivery_marker.url);
                });
            }
        });
    });

    // Fix wrong maps center when map is hidden
    $('#tabAddresses').click(function(){
        x = delivery_map.getZoom();
        c = delivery_map.getCenter();
        google.maps.event.trigger(delivery_map, 'resize');
        delivery_map.setZoom(x);
        delivery_map.setCenter(c);

    });
</script>

var geocoder = new google.maps.Geocoder();上出现的错误

然后,我尝试加载以下脚本:<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>

我又犯了一个错误:

‘未捕获的TypeError:无法读取属性'offsetWidth’的null‘

有人知道为什么它不起作用吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-05 12:00:49

谷歌地图在你试图调用它的时候没有加载。你应该使用这个:

HTML:

代码语言:javascript
运行
复制
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&callback=initMap" async defer></script>

联署材料:

代码语言:javascript
运行
复制
function initMap() {
    // Google maps are now initialized.
}

您需要在脚本中包含异步和延迟属性--这将确保网站的其他部分继续加载,而不是等待脚本加载(这很方便,因为它很大)。其次,在调用脚本时传递“回调”参数。这是在加载脚本时应该执行的函数的名称。通过这种方式,您可以确保只在映射实际加载并显示在窗口中时才初始化它。

票数 5
EN

Stack Overflow用户

发布于 2019-10-16 18:33:31

只需将此脚本添加到html文件:

代码语言:javascript
运行
复制
<script async defer
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>

如果您想测试google地理编码api或签出一些代码,请查看此链接。Google地理编码服务API源

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36423968

复制
相关文章

相似问题

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