首先你將要使用Bing Maps REST路由服務:https://msdn.microsoft.com/en-us/library/ff701717.aspx
創建請求URL是非常直接的和相同的,無論你使用的編程語言的。對於你的榜樣,來計算你的位置行車路線,將創建一個路由請求的URL是這樣的:
http://dev.virtualearth.net/REST/V1/Routes/Driving?wp.0=37.285989,-122.019943&wp.1=1427%20Alderbrook%20Ln%20San%20Jose%20CA%2095129&key=YOUR_BING_MAPS_KEY
注意,街道地址來代替空間有20%。這被稱爲網址編碼,是最佳做法。這在Python中很容易做到,但現在想指出它,所以你知道它爲什麼在下面的代碼示例中。
以下代碼示例對目標進行編碼,創建URL並打印Bing地圖服務的響應。請注意,我正在使用Python 3.4。根據您使用的Python版本,代碼可能略有不同。
import urllib.request
# Your Bing Maps Key
bingMapsKey = "YOUR_BING_MAPS_KEY"
# input information
longitude = -122.019943
latitude = 37.285989
destination = "1427 Alderbrook Ln San Jose CA 95129"
encodedDest = urllib.parse.quote(destination, safe='')
routeUrl = "http://dev.virtualearth.net/REST/V1/Routes/Driving?wp.0=" + str(latitude) + "," + str(longitude) + "&wp.1=" + encodedDest + "&key=" + bingMapsKey
request = urllib.request.Request(routeUrl)
response = urllib.request.urlopen(request)
print (response.read())
現在這打印出服務響應作爲一堆文本實際上是一堆JSON。我們需要解析JSON,以便我們可以提取我們想要的信息。要做到這一點,您需要知道這裏記錄的JSON響應的結構:https://msdn.microsoft.com/en-us/library/gg636957.aspx
要解析響應,您需要導入Python的JSON庫。一旦你這樣做,你可以加載原始數據作爲JSON對象,然後通過JSON對象樹來獲取你想要的值。由於您只計算兩點之間的路線,所以在響應中只有一條路線腿。路線段包含一系列包含路線步驟信息的行程項目。這是一個更新的代碼示例,循環顯示每個項目並逐行打印指令:
import urllib.request
import json
# Your Bing Maps Key
bingMapsKey = "YOUR_BING_MAPS_KEY"
# input information
longitude = -122.019943
latitude = 37.285989
destination = "1427 Alderbrook Ln San Jose CA 95129"
encodedDest = urllib.parse.quote(destination, safe='')
routeUrl = "http://dev.virtualearth.net/REST/V1/Routes/Driving?wp.0=" + str(latitude) + "," + str(longitude) + "&wp.1=" + encodedDest + "&key=" + bingMapsKey
request = urllib.request.Request(routeUrl)
response = urllib.request.urlopen(request)
r = response.read().decode(encoding="utf-8")
result = json.loads(r)
itineraryItems = result["resourceSets"][0]["resources"][0]["routeLegs"][0]["itineraryItems"]
for item in itineraryItems:
print(item["instruction"]["text"])