javascript - 在单个页面上加载多个谷歌地图

标签 javascript html performance google-maps

我尝试在单个页面上加载多个谷歌地图,但页面加载时间非常长。如何加快页面加载时间?

我的示例 html 代码如下。实际上,下面的 Google map 是循环创建的,其数量至少为 100。

    <!DOCTYPE html>
<html>
<head>        
</head>

<body>          
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places"></script>

    <div id="postid_78" style="width:600px;height:150px;">
        <script>                    
                var mapProp = {
                    center: new google.maps.LatLng('42.5000', '1.5000'),
                    zoom: 5,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                var map = new google.maps.Map(document.getElementById("postid_78"), mapProp);
                var marker = new google.maps.Marker({
                    position: new google.maps.LatLng('42.5000', '1.5000'),
                    map: map
                });
        </script>                
    </div>
    <hr />
    <div id="postid_77" style="width:600px;height:150px;">
        <script>                    
                var mapProp = {
                    center: new google.maps.LatLng('42.5000', '1.5000'),
                    zoom: 5,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                var map = new google.maps.Map(document.getElementById("postid_77"), mapProp);
                var marker = new google.maps.Marker({
                    position: new google.maps.LatLng('42.5000', '1.5000'),
                    map: map
                });
        </script>                
    </div>
    <hr />
    <div id="postid_76" style="width:600px;height:150px;">
        <script>                    
                var mapProp = {
                    center: new google.maps.LatLng('42.5000', '1.5000'),
                    zoom: 5,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                var map = new google.maps.Map(document.getElementById("postid_76"), mapProp);
                var marker = new google.maps.Marker({
                    position: new google.maps.LatLng('42.5000', '1.5000'),
                    map: map
                });
        </script>                
    </div>
    <hr />
    <div id="postid_75" style="width:600px;height:150px;">
        <script>                    
                var mapProp = {
                    center: new google.maps.LatLng('42.5000', '1.5000'),
                    zoom: 5,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                var map = new google.maps.Map(document.getElementById("postid_75"), mapProp);
                var marker = new google.maps.Marker({
                    position: new google.maps.LatLng('42.5000', '1.5000'),
                    map: map
                });
        </script>                
    </div>
    <hr />
    <div id="postid_74" style="width:600px;height:150px;">
        <script>                    
                var mapProp = {
                    center: new google.maps.LatLng('42.5000', '1.5000'),
                    zoom: 5,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                var map = new google.maps.Map(document.getElementById("postid_74"), mapProp);
                var marker = new google.maps.Marker({
                    position: new google.maps.LatLng('42.5000', '1.5000'),
                    map: map
                });
        </script>                
    </div>
    <hr />
    <div id="postid_73" style="width:600px;height:150px;">
        <script>                    
                var mapProp = {
                    center: new google.maps.LatLng('42.5000', '1.5000'),
                    zoom: 5,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                var map = new google.maps.Map(document.getElementById("postid_73"), mapProp);
                var marker = new google.maps.Marker({
                    position: new google.maps.LatLng('42.5000', '1.5000'),
                    map: map
                });
        </script>                
    </div>

</body>
</html>

最佳答案

要提高页面加载速度,您可以(必须)做几件事。

  1. 加载 API 异步 DOCUMENTATION HERE
  2. 仅本地图在视口(viewport)中可见时才初始化 map 因此您可以使用插件 LIKE THIS
  3. 同时将 JS 脚本始终放在 body 标记的底部。 因此所有内容都会被加载,并且没有 JavaScript 会拒绝内容加载

这确实会增加页面负载。我已经在几个项目中这样做了,效果很好!

关于javascript - 在单个页面上加载多个谷歌地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25900309/

相关文章:

javascript - 检查字符串是否有句点(十进制)w/jQuery?

c++ - 如何编写高效的字符串缓冲区

javascript - 如何使用正则表达式查看字符串是否部分(或完全)匹配另一个字符串?

javascript - 对齐动态头部和主体 - .Net MVC

javascript - 加载超链接页面后如何响应事件?

mysql - 高 CPU - 怎么办

performance - ORM 查询性能与 RDBMS 性能

javascript - 如何在 node.js AddOn 中访问 Local<String>

javascript - 任何 JavaScript 语句都是表达式吗?

html - 你如何通过 jQuery 在将鼠标悬停在复选框上时生成对话框