GoogleMap地圖圖片請求資料限制解決辦法

來源:互聯網
上載者:User

最近GoogleMap對於通過API訪問的地圖服務的請求不再是完全免費,使用者每日每個API最多可以產生25000個地圖下載任務,對於地圖圖片則限制在2500張。這會對很多使用Google Map API開發的應用程式有很大的影響,特別是在國內。也到不少朋友的尋問,完全突破的方式還沒有,想了一種變通的方式來解決。

這個辦法就是在我們的用戶端和Google Map地圖伺服器之間架設一台地圖圖片快取服務器,把需要的地圖,先緩衝在地圖圖片快取服務器上,用戶端請求時,先從快取服務器上去擷取,如果沒有,再從Google Map地圖伺服器上擷取,儲存在本地,再從本地返回給用戶端,這樣就可以減少對Google Map地圖圖片伺服器的請求次數。

當然,這種方法在開始的時候,請求量仍然會很大,不過到後面,數量就會越來越少。

大概流程如下:

流程已經很簡單了,中間實現的方式也不複雜,只要能實現上面的功能,使用哪個平台不重要,下面是前端自己定義地圖類型的方式:

 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>Google Maps JavaScript API v3 Example: Image MapTypes</title>
6 <link href="mapfiles/css/default.css" rel="stylesheet" type="text/css" />
7 <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
8 <script>
9 function LocalMapType() {}
10
11 LocalMapType.prototype.tileSize = new google.maps.Size(256, 256);
12 LocalMapType.prototype.maxZoom = 15;
13 LocalMapType.prototype.minZoom = 8;
14 LocalMapType.prototype.name = "本地地圖";
15 LocalMapType.prototype.alt = "顯示本地地圖資料";
16 LocalMapType.prototype.getTile = function(coord, zoom, ownerDocument) {
17 var img = ownerDocument.createElement("img");
18 img.style.width = this.tileSize.width + "px";
19 img.style.height = this.tileSize.height + "px";
20 img.onerror = function(){
21 img.src = "c:\\Map\\nomap.png";
22 }
23
24 //var strURL = "C:\\Map\\Google_Hybrid\\" + zoom + "\\" + coord.x + "\\" + coord.y + ".png";
25 var strURL = "http://localhost:8080/gettitle/gettitle.png?x=" + coord.x + "&y=" + coord.y + "&z=" + zoom;
26 img.src = strURL;
27 return img;
28 };
29
30 var localMapType = new LocalMapType();
31
32 function initialize() {
33 var myLatlng = new google.maps.LatLng(36.867078, 119.286772);
34 var myOptions = {
35 center: myLatlng,
36 zoom: 11,
37 streetViewControl: false,
38 mapTypeControlOptions: {
39 mapTypeIds: ["local"]
40 }
41 };
42
43 var map = new google.maps.Map(document.getElementById("map_canvas"),
44 myOptions);
45
46 map.mapTypes.set('local', localMapType);
47 map.setMapTypeId('local');
48 }
49
50 </script>
51 </head>
52 <body onload="initialize()">
53 <div id="map_canvas" style="width: 640px; height: 480px;"></div>
54 </body>
55 </html>

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.