Site Meter & 線上人數

tracker

部落格觀察


我的噗浪

Google Latitude

微軟認證



聯絡我 - MSN & Skype & Email



最新回應

利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

2008/4/3 23:55| 閱讀數 : 27259 | 1 人收藏 我要推薦 | 42 Comments | 文章分類: .NetFramework C# Library 網路工具 訂閱

使用 WebClient 類別:

   1:  // Taipei 101
   2:  string address = "台北市信義路五段七號101樓";
   3:   
   4:  // 查詢經緯度
   5:  string output = "csv";
   6:  string key = "ABQIAAAAXDq__hWKi9eMCwnn7LrMCxT2yXp_ZAY8_ufC3CFXhHIE1NvwkxSnSVp_Xlsd4Ph5iyMua7PE5E0x_A";
   7:  string url = string.Format("http://maps.google.com/maps/geo?q={0}&output={1}&key={2}", address, output, key);
   8:   
   9:  WebClient wc = new WebClient();
  10:   
  11:  // 讀取結果
  12:  Stream s = wc.OpenRead(url);
  13:  StreamReader sr = new StreamReader(s, Encoding.UTF8);
  14:  string result = sr.ReadToEnd();
  15:   
  16:  // 解析 200,8,25.033408,121.564099  (HTTP status code, accuracy, latitude, longitude)
  17:  string[] tmpArray = result.Split(',');
  18:  string latitude = tmpArray[2];
  19:  string longitude = tmpArray[3];
  20:   
  21:  MessageBox.Show(string.Format("緯度: {0}, 經度: {1}", latitude, longitude), address, 
  22:  MessageBoxButtons.OK, MessageBoxIcon.Information);

使用 HttpWebRequest、HttpWebResponse 類別:

   1:  // Taipei 101
   2:  string address = "台北市信義路五段七號101樓";
   3:   
   4:  // 查詢經緯度
   5:  string output = "csv";
   6:  string key = "ABQIAAAAXDq__hWKi9eMCwnn7LrMCxT2yXp_ZAY8_ufC3CFXhHIE1NvwkxSnSVp_Xlsd4Ph5iyMua7PE5E0x_A";
   7:  string url = string.Format("http://maps.google.com/maps/geo?q={0}&output={1}&key={2}", address, output, key);
   8:   
   9:  // 送出要求
  10:  HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
  11:   
  12:  // 取得回應
  13:  HttpWebResponse response = (HttpWebResponse) request.GetResponse();
  14:   
  15:  // 讀取結果
  16:  StreamReader sr = new StreamReader(response.GetResponseStream());
  17:   
  18:  // 解析 200,8,25.033408,121.564099  (HTTP status code, accuracy, latitude, longitude)
  19:  string[] tmpArray = sr.ReadToEnd().Split(',');
  20:  string latitude = tmpArray[2];
  21:  string longitude = tmpArray[3];
  22:   
  23:  MessageBox.Show(string.Format("緯度: {0}, 經度: {1}", latitude, longitude), address,
  24:      MessageBoxButtons.OK, MessageBoxIcon.Information);


執行畫面 :
GoogleMaps-0016

延伸閱讀:

  1. Google Map API Concepts
  2. Using WebClient and HttpWebRequest

DotBlogs Tags: .NetFramework C# chhuang 網路工具


關連文章

回應

  • dean 2008/5/2 上午 10:59 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    你好, 利用地址找經緯度然後在google map中顯示出來, 找了好久終於在你的blog中找到, 謝謝你. 另外想再請教一下, 不知你知不知道在google map中是否可以做到類似永慶房屋圈選式的功能, 如果可以做到的話, 方便告知一下嗎?
  • dean 2008/5/2 上午 11:01 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    報歉再補充一下, 永慶房屋圈選式的功能的網址如下,

    http://www.yungching.com.tw/CK/CK0101.asp
  • chhuang 2008/5/3 下午 02:38 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    你可以參考 Google Mpas 的 Overlays 單元: Interactive Polyline Encoder Utility

    主要是確認四點的位置,在針對你的資料庫比對範圍內的標的物。

     

  • dean 2008/5/23 下午 06:16 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    謝謝你的指導, 我有參考你的程式下去run是沒問題的, 但當我把地址改成高雄市新興區光華一路206號後就找不到目標物了, 起初我以為google沒這地址, 但當我去http://maps.google.com/, 輸入高雄市新興區光華一路206號就可以找到, 想請教你知道原因嗎?
  • chhuang 2008/5/23 下午 07:05 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    我寫了一個測試程式是可以的,貼圖如下:

    Image Hosted by ImageShack.us

  • dean 2008/5/24 上午 03:53 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    咦...真的有耶, 不知版主可否能分享一下你的大作, 謝謝
  • 吴兴发 2008/7/5 下午 02:44 回覆

    # 想请你帮我查查这个经纬度是什么地方

    你好:
    麻烦你帮我查一下
    ────────────────
    纬度: 31.004999
    经度: 121.408600
    这是上海什么地方
    好吗
    越详细越好
    谢谢了先
    结果发到邮箱
  • yoyo 2008/9/10 下午 07:28 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    您好,想請問我參考了您的程式碼執行,
    address:台北市信義路五段七號101樓
    但我執行的結果經緯座標為[0,0]
    而且地址例如:南投市彰南路3段687巷77號
    執行的結果經緯座標也為[0,0]
    但直接在網址列上打又可以有正確座標顯示,
    不知您是否也遇過這樣的問題呢?謝謝。
  • chhuang 2008/9/11 上午 12:05 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    可以試著改變 User-Agent 這個 Header 即可

  • yoyo 2008/9/11 下午 05:50 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    非常謝謝您的回應,
    再請問是要將User-Agent這個Header改成什麼呢?謝謝。
  • chhuang 2008/9/12 上午 08:38 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    User-Agent 就是使用者代理程式,指的是瀏覽器(Firefox、Internet Explorer、Chrome...等)、下載續傳器(Free Download Manager、Flashget)、Spider、Fiddler 等等都是。但是某些網站限定僅瀏覽器,所以要改 Header 來偽裝成瀏覽器行為。

     

  • 坎蒂 2008/9/18 上午 02:53 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    你好..我是個目前正再做畢業專題的大四生

    目前的階段剛好是GOOGLE MAP經緯度的問題

    就是輸入地址就可以知道經緯度



    想問說你的這個程式碼可以給我嗎??

    如果可以的話

    可以寄到我的信箱嗎???

    elaine693858@gmail.com


    拜託拜託
  • 洪小姐 2008/10/7 下午 03:10 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    高雄市七賢ㄧ路293號
  • kent 2008/10/24 下午 08:08 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    您好~在下對這個程式非常有興趣,可以分享一下您的大作嗎?
    謝謝 imkent@livemail.tw
  • chhuang 2008/10/26 下午 11:51 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    範例程式不就在上面嗎??

     

  • kojimax 2008/10/29 上午 10:16 回覆

    # 奇怪的狀況~ 附範例

    Hi~ chhuang
    感謝提供此範例
    不過我遇到一個狀況,提供參考一下

    {基隆市基金一路108號} 範例會查不到 ,google map頁面可
    {基隆市安樂區基金一路108號} 範例可 ,google map頁面可

    {台北市信義路五段七號101樓} 範例不可 ,google map頁面不可
    {台北市信義路五段7號101樓} 範例可,google map頁面可

    嗯~ 很讚了 謝~

  • chhuang 2008/10/29 上午 10:28 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    (1) {基隆市基金一路108號} 應該是 OK 啦...

    (2) 因為 Google 在地址查詢的部分,只允許國字號碼(例如一二三四五六七八九十)出現在 "段" 的位置,所以 "門牌號" 用 "七" 是查不到的。

  • Valance 2008/10/29 下午 05:01 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    請問一下,
    google map API
    目前有提供,利用經緯度來取得座標的方法嗎?
  • chhuang 2008/10/29 下午 05:26 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    to Valance :

    請參考 GProjection

  • Valance 2008/10/29 下午 05:36 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    ^^,不好意思,
    我問得不清楚,
    是想問google map api
    可以利用經緯度來取得像地址、路名等資訊嗎?
  • chhuang 2008/10/29 下午 05:42 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    to Valance :

    不行...
     

  • Valance 2008/10/29 下午 05:51 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    ^^
    ok!謝謝
  • Celesta 2008/11/8 上午 05:45 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    你好!我目前在進行網路問卷的製做,當中有用到互動式的google map,目的是希望受訪者可以在圖上點選綠地。但是我不知道該如何將受訪者點選後的位置記錄起來,不知道可不可以請你給我一點意見?非常感激!!

    我的網站是http://personalpages.manchester.ac.uk/postgrad/Wan-yu.Shih/Index.html
  • chhuang 2008/11/9 上午 11:25 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    to Celesta :

    不知道綠地資料是不是跟隨問卷會一次被存進資料庫,下次開啟該問卷一併載入原先的綠地標誌??? 綠地資料可以是一筆還是多筆?? 綠地的位置是否可拖曳修改、甚至是刪除?? 綠地資料除了經緯度外,是否包含額外的資訊(例如不同顏色的圖示、標題、描述)??

    很多的因素都有可能讓你的 Google maps 被無限上綱,如果很單純的話,搞不好在 Client Side 而不需 Server Side 的程式碼即可。
     

  • Celesta 2008/11/10 下午 03:55 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    to chhuang :
    謝謝你的回答!我是想要跟其他問卷資料存成同一筆資料,功能盡量以簡單為主,只要能夠辨認使用者到底選在哪邊就好,所以只要有經緯度就可以,不知道我可不可以跟妳直接用MSN聯絡?我目前人在英國,而問卷有時效上的限制,希望可以直接請教你!非常謝謝!
  • chhuang 2008/11/10 下午 06:55 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    to Celesta :

    因為我本身有專案的進度壓力必須完成,所以可能沒有辦法幫您。如果你很急的話,可以去 Google Maps API 或是 微軟技術社群討論區 尋求協助。
     

  • chhuang 2008/11/11 上午 12:17 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    to Celesta :

    剛剛稍微看了一下妳做的網站,有幾個問題應該要被解決的

    (1) 問卷無法記住狀態: 當使用者按下上一頁,答案似乎沒有辦法被保留。

    (2) 問卷題目哪些是必填欄位,沒有用【顏色】或是【符號】區別。

    (3) 問卷沒有做 Javascript 比要的檢查,例如: 【必填欄位】、【填了其他說明、將相對應的 其他 Radio 未被勾選】

    (4) 問卷沒有做暫存的機制,如果填寫到一半斷線就要重新填寫。另外,有暫存的資料表才方便儲存問卷填寫的答案;綠地標誌經緯也可以利用 AJAX 直接先存到暫存的資料表去。等到按下送出的時候,要將屬於同一份問卷的暫存資料表答案一併存到正式的問卷資料表,以方便做統計。
     

  • Celesta 2008/11/11 上午 01:10 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    to chhuang :
    謝謝你!事實上我已經寫信到Google API尋求幫助了,但一直沒有回覆。但我有找到一個網頁是教人家怎麼把地圖資料輸出成經緯度的。可惜我沒有php的底子,實在不知道那些程式語言該擺在哪邊!不知道您目前的工作的狀況如何?如果時間許可的話能不能請你幫我把這個問卷做好呢?我們可以商量一下價錢,因為在問卷中使用互動式的google map算是創舉,如果有可能的話我很希望這個方法可以執行。希望您能幫我,或是請您推薦其他有相關專業技術的人給我。非常感謝!!
  • chhuang 2008/11/11 上午 10:15 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    to Celesta :

    如果你沒有什麼時間,卻又要使用 Google Maps 來呈現的話。我建議您還是使用越簡單的功能越好。

    基本上,妳原先頁面上使用了 Draggable Marker 就已經讓事情變得稍微有一點點複雜。

    (1) 如果有人將 marker 放在不是妳定義所謂的綠地上,這份問卷又怎樣算??

    (2) mark 沒有做 delete 的處理也是不好的。

    如果時間緊迫,我建議妳列出台北市的可供候選綠地 candidates,利用與 Google Maps 的互動來讓使用勾選。

    例如,我簡單寫一個 Demo 範例:  http://demo.dotblogs.com.tw/chhuang/Demo/DemoMap.html

    畫面上,我在地圖上放置了兩個綠地的 marker,分別是大安森林公園與二二八和平公園。使用者透過點擊 marker 來達到勾選及取消的效果。(由 checkbox 來勾選及取消的效果我沒有寫)

    另外,在這邊回答問題是做公益的,不是想賺妳的錢。因為專案進度忙碌,只能幫到妳這麼多了,抱歉。

  • Jemy 2008/11/12 下午 02:20 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    请问博主,你知不知道有什么地图提供通过经纬度得到地址的接口,且是免费的。你好像说google没有这个功能吧?我正在急找这个功能,如果知道请给我回邮件,非常感谢你
  • Jemy 2008/11/12 下午 02:22 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    或者是一些变相的办法,反正只要能通过经纬度得到详细地址,google map来实现更好。
    我的邮箱jemy2008@gmail.com
  • chhuang 2008/11/12 下午 03:19 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    to Jemy :

    其實目前 Google Maps API 有提供經緯度轉換成地址的方法,但是不確定中國大陸是否可以使用。

    參考: Reverse Geocoding - use Google's geocoder to return human-readable addresses from locations on the map!
     

  • 水表 2009/3/10 上午 09:41 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    我也有与一楼同样的问题
  • lanma 2009/3/12 上午 11:35 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    中國大陸也可以用Reverse Geocoding以經緯度轉地址~
  • Ja 2009/4/28 上午 02:18 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    請問版主,網址執行Reverse Geocoding顯示結果「200,8,"110台灣台北市信義區信義路五段7號"」,用HttpWebResponse抓取顯示結果,其中「"110台灣台北市信義區信義路五段7號"」StreamReader讀到的只有「"No.7」,不知版主是否可協助解惑,謝謝您。
  • Ja 2009/4/30 上午 12:37 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    版主,已經解決了,謝謝:D
  • 馮小娟 2009/6/29 下午 04:21 回覆

    # 幫我查這個經緯度位子的地址

    我查好經緯度位子查詢結果:
    IP: 118.160.64.72
    城市:Hsinchu 緯度:24.8047 經度:120.9714
    幫我查他的"地址"新竹哪個地方
    地址:?
    拜託!!
    謝謝!!
  • CCO 2009/7/28 上午 10:07 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    不好意思 請問一下,這個有辦法改成一次匯入多個地址來查尋經緯度嗎
  • chhuang 2009/7/28 下午 12:42 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    可以請參考 http://code.google.com/intl/zh-TW/apis/maps/documentation/geocoding/index.html 說明...
  • 學生 2009/10/6 下午 06:36 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    不好意思,我現在在實習做一個系統,只有學過ASP.C#所以上面程式碼有很多都看不懂,但想要用這個方法來查詢資料庫中地址的經緯度並記錄下來.可不可以分享一下原始檔~謝謝
  • chhuang 2009/10/6 下午 08:11 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    to 學生: 範例程式不就在上面嗎?? 而且全都是 C# ...
  • 树脂 2009/11/3 下午 09:04 回覆

    # re: 利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

    我也在学习这个,优化啊,最怕的就是百度了,
標題 *
名稱 *
Email (將不會被顯示)
Url
回應
登入後使用進階評論
Please add 4 and 4 and type the answer here: