0

我正在使用Gmap3-Jquery 插件在我的一个 Web 应用程序中生成 Google 地图。目前我将Google API下载到我的本地驱动器并在我的 HTML 页面中使用它。

但是所有操作对我来说都很好,但是 3-4 天后 Google API 停止工作。如果我从同一个链接下载新的 Google API 到我的本地驱动器,一切正常。这种问题的原因可能是什么?是因为API Key吗?还是因为我下载到本地驱动器并从本地引用它?

但我正在下载不需要 API 密钥的谷歌地图 API3。

这是代码:

<script src="/site_media/js/google-map.js" type="text/javascript"></script>
<script type="text/javascript" src="/site_media/js/gmap3.js"></script> 
<script type="text/javascript">
    $(function(){
    $('#facility_map').gmap3(
        {    
      action:'init',
      options:{
                center:[26.327475, 50.20134],
            zoom: 18,
                mapTypeId: google.maps.MapTypeId.HYBRID
          }
        },      
            {
     action:'getRoute',
     options:{
               origin:['26.327475', '50.20134'], 
               destination:['{{facility.latitude}}', '{{facility.longitude}}'],
           travelMode: google.maps.DirectionsTravelMode.DRIVING
              },
     callback: function(results)
        { 
           if (!results) return;
           $(this).gmap3(
            { 
              action:'addDirectionsRenderer',
              options:{      
                            preserveViewport: true,         
                directions:results
                  }
            });
        }   
    },
           {
             action:'getDistance',
             options:{ 
                      origins:[['26.327475', '50.20134']], 
              destinations:[['{{facility.latitude}}', '{{facility.longitude}}']],
              travelMode: google.maps.TravelMode.DRIVING
             },
      callback: function(results)
      {
        var html = '';
        if (results)
            {
          for (var i = 0; i < results.rows.length; i++)
          {
         var elements = results.rows[i].elements;
         for(var j=0; j<elements.length; j++)
         {
            switch(elements[j].status)
           {
             case google.maps.DistanceMatrixStatus.OK:
                  html += results.destinationAddresses[j]+" -<b> "+elements[j].distance.text + ' (' + elements[j].duration.text + '</b>)<br />';
             break;
             case google.maps.DistanceMatrixStatus.NOT_FOUND:
              html += 'The origin and/or destination of this pairing could not be geocoded<br />';
             break;
             case google.maps.DistanceMatrixStatus.ZERO_RESULTS:
                  html += 'No route could be found between the origin and destination.<br />';
              break;
            }
        }
      } 
       } 
        else 
        {
           html = 'error';
         }
         $('#distance_msg').html("Distance From Rezayat Head Office Khobar to "+html);
       }
     }
    ); 
    });


</script>  
4

1 回答 1

1

您是否将以下文件保存到您的硬盘驱动器/Web 应用程序:

http://maps.google.com/maps/api/js?sensor=false

如果是这样,那么你的问题的答案......

还是因为我下载到本地驱动器并从本地引用它?

...是是的。

您引用的那个文件是缓存的,所以它总是在变化。我从未使用过您上面提到的 jQuery 地图插件(虽然它看起来真的很酷!),但在查看他们的 API 时,它提到您应该从 Google 调用该脚本,而不是直接存储它。

另外,请记住,让 Google 为您处理 JS 负载和带宽,并尽量避免将其存储在本地。API 可能会更改,并且使用您的缓存版本,您的地图可能会中断,因为它没有加载最新版本。

我还要添加一件事:让Google 也加载您的 jQuery - 使用该站点的人将有更好的体验。这篇文章将解释为什么更多。

于 2012-09-29T13:23:51.473 回答