2012-09-29 128 views
0

我正在使用Gmap3-Jquery plugin在我的一個Web應用程序中生成Google地圖。 當前我下載Google API到我的本地驅動器,並在我的HTML頁面中使用相同的。Google API 3過了一段時間後會過期

但是,所有這些操作對我而言都很好,但在3-4天后Google API停止工作。如果我從相同的鏈接下載新的Google API到我的本地驅動器,一切正常。造成這種問題的原因可能是什麼?是因爲API Key嗎?還是因爲我下載到我的本地驅動器並從本地引用它?

但我正在下載Google Maps API3,它不需要API密鑰。

下面是代碼:

<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> 

回答

1

您保存下列文件到您的硬盤驅動器/ Web應用程序:

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

如果是這樣,那麼答案你的問題...

還是因爲我下載到我的本地驅動器,並從本地引用它 ?

...是的。

您所引用的文件被緩存,所以它始終在變化。我從來沒有使用過上面提到的jQuery地圖插件(雖然它看起來很酷),但是在查看它們的API時,它提到你應該從Google調用該腳本,而不是直接存儲它。

另外,請記住,讓Google爲您處理該JS負載和帶寬,並儘量遠離本地存儲。 API可能會發生變化,並且隨着您的緩存版本的出現,您的地圖可能會因爲沒有加載最新版本而崩潰。

我還會再添加一件東西:讓Google load your jQuery也是 - 使用該網站的人會有更好的體驗。本文將解釋更多why

+0

maps api bootstrap文件包含代碼,每隔幾個小時就會使其失效,以專門防止這種情況。 –

+0

@Chand Killingsworth:所以我需要從外部引用地圖API?通過URL而不是從本地驅動器引用? – Asif

+0

是的,你必須從外部引用它。 – JohnnyCoder