×
Namespaces

Variants
Actions

Archived:如何在手機應用程式中使用Google地圖資料

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

文章
翻译:
最后由 hamishwillee 在 19 Nov 2013 编辑

這篇文章會解是在手機應用程式中如何使用Google地圖的資料。
Google地圖提供允許用簡單的HTTP請求來存取其表象化狀態轉變(REST)的服務,所以這樣可以很容易地整合到手機應用程式中。

Archived.png存档: 这篇文章是存档,因为考虑到今天它与第三方开发者建立商业解决方案不相关。

Since this article was written, alternative Map Tile caching solutions for Java ME have become available. Map Tile caching solutions such as the Nokia Maps API for Java ME have several advantages over static mapping solutions such as the static Google Maps API including:

  • Static mapping services such as the Google Static Maps API or Nokia's RESTful Map API do not cache or tile the images when requested, therefore each request involves a round trip to the server. If the map on a mobile application needs to be refreshed at any time, using a caching library will result in a reduction in network traffic after around three maps have been displayed. An explanation of this can be found here
  • As the name implies, Google's Static Maps API can only retrieve over http static images for a requested coordinate point, image size, image type and zoom level. Newer libraries offer additional functionality out of the box offering dynamic Map content and touch support, where the user can move around his/her current position, zoom in, zoom out, modify the view mode to satellite or translate an address to a coordinate point and show that on the map, among others. This abstraction of the underlying functionality is hidden from the developer,os much less coding is needed in order to achieve the same result .

Additionally the following points apply in favour of Nokia Maps when comparing to Google Maps:

  • No legal restrictions of using the API outside a web browser application or need to provide a link to the native Google Maps App (if there is one), or to Google Maps (if there isn't one). See Terms of Service below.
  • Higher free daily request limits. Nokia Maps API for Java ME supports up to 50,000 render requests per day and per unique IP address (as of January 2012), for Nokia Developer registered users (free of charge) while the limit for Google's Static Maps API is currently 1000 unique (different) image requests per viewer per day.
An article with the same functionality, written with Nokia Maps API for Java ME, that uses much less code can be found here

Contents

申請Google地圖API金鑰

注意:使用這個免費的Google地圖APU金鑰程式會違反Google的條款和條件 (10.8節),假如你想要使用這個例子中的Google地圖API你應該購買企業許可證。

首先你需要在這一頁申請:
http://code.google.com/apis/maps/signup.html
一旦你申請了,你會取得一把金鑰(一個簡單的字串)這樣你就可以使用來查詢Google的地圖服務。

靜態地圖

標準的Google地圖程式碼是可以用於Web應用程式的,然而,它包括了很多的Ajax函式,假如你想要建構手機應用程式的話可能不太有用,解決的方法是使用靜態地圖服務可以允許擷取單一的影像,這些影像可以容易地用在手機應用程式中。

靜態地圖服務支援不同的影像格式(png32、GIF、JPG)及自訂的影像尺寸,這樣你就可以取得不同目的的完美影像,舉一個例,假如你想要擷取位置在:

  • 緯度: 41.867878
  • 經度: 12.471516

你可以用HTTP GET的請求方式來簡單地擷取這個URL:

http://maps.google.com/staticmap?center=41.867878,12.471516&format=png32&zoom=8&size=240x320&key=<API_KEY>

這個方式可以取得一個寬240像素高320像素的PNG32的影像,其中心點在(41.867878,12.471516),並且其縮放及別為8(縮放的範圍從0到19)
Google staticmap.jpg

Geocode一個地址

從Google地圖文件:
Geocoding是轉換地址(像是"320台灣桃園縣中壢市永泰街129號")為地理座標(像是緯度24.958686,經度121.231145)的程序

下面的範例描述建構一個應用程式來顯示使用者輸入的地址,首先你需要geocode地址到地理座標,
要這樣作,Google地圖提供另一個表象化狀態轉變服務可以容易地用簡單的HTTP請求存取,

假如你想要地理編碼這個地址
320台灣桃園縣中壢市永泰街129號
從你的程式碼請求這個URL

http://maps.google.com/maps/geo?q=320台灣桃園縣中壢市永泰街129號&output=csv&key=<API_KEY>

然後你會取得這個輸出:

200,6,24.958686,121.231145

在這裡:

  • 第一個數字是一個編碼,在這裡(200)意思是地理編碼是成功的(完整的狀態編碼列表見:[1])
  • 第二個數字給定地理編碼的精確度(從0到9 - 最大精確度)
  • 第3個及第4個數字表示地理編碼地址的緯度及經度,所以這些座標可以用來透過靜態地圖服務擷取地圖。

還有你會看見在地理編碼請求中有一個'output'參數,這個意指你可以選擇你喜歡的輸出格式,支援的格式有:

  • xml
  • kml (跟xml相同但是不同的Content-Type)
  • json (對手機應用程式不是真正有用)
  • csv (逗號分隔值)

代理伺服器的使用限制

因為你的Google地圖API金鑰受限於一個特定的URL才能存取地圖服務,所以你需需要設定一個代理伺服器這樣才可以從手機應用程式接收HTTP請求然後並轉送這些請求給Google Maps REST URLs,接著Google回應給行動客戶端。

另外也要知道每天的請求數目的限制,包括靜態地圖及地理編碼,對於個人使用來說是夠用的,但是你假如你計畫開發商業服務時需要知道這一點。

範例應用程式

J2me google maps.jpg
一個J2ME範例應用程式,使用上述的方法,可以在這一頁下載: Google Maps J2ME 測試
在這例子裡使用的Google Maps J2ME API原始碼可以在這裡下載:J2ME Google Maps API

相關內容

相关链接

This page was last modified on 19 November 2013, at 09:33.
118 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×