路老闆個人品牌網站
0
  • 會員登入
  • 關於我們
    回主選單
    • 關於我們
  • 服務項目
  • 我的錄音小間
  • 課程活動
    回主選單
    • 線上課程
    • 預約服務
    • 活動報名
  • 商品總覽
  • 創作與紀錄
    回主選單
    • 部落格
    • 影像紀錄
    • Podcast
    • 我的作品
  • 最新消息
  • 聯絡我們
  • Join us
  • Login
  • 0
    路老闆個人品牌網站
  • 關於我們
    關於我們
  • 服務項目
  • 我的錄音小間
  • 課程活動
    線上課程 預約服務 活動報名
  • 商品總覽
  • 創作與紀錄
    部落格 影像紀錄 Podcast 我的作品
  • 最新消息
  • 聯絡我們
部落格
  • 文章總覽
  • 分類
  • 技術筆記
  • 日本旅遊
  • 網站搬家
  • 時事觀察
  • 投資理財
  • 公司經營
  • 主機架設
  • 接案
  • 遊戲心得
  • 產品開箱
  • 網頁相關
  • 金流串接
  • 遊戲經濟
  • 閒聊
  • 直銷
  • CodeIgniter
  • cpanel
  • 出書材料
  • 個人品牌
  • SEO
  • 讀書心得
  • 金流物流
  • 線上課程心得
  • 日劇
    • 大河劇
      • 真田丸
  • AI
91app ClubHouse php8 imunify360 cdn apache php nginx linode digitalocean
  1. 首頁
  2. 部落格
  3. 使用 Google Map API 把地址轉換成經緯度座標

使用 Google Map API 把地址轉換成經緯度座標

2012 Jan 18 未分類

最近的案子有個需求
業主開了很多實體店面
希望客人可以直接在網頁上輸入地址
就可以找出最近的店





資料庫預先記錄了店家的地址清單
我們可以用 Google Map 的 API 來查詢地址的對應經緯度座標

首先 要到 Google API 的頁面申請
http://code.google.com/intl/zh-TW/apis/maps/signup.html
只要輸入你要使用這個服務的網域
並且按下確定即可

Google API 會給你一組金鑰
這是用來跟 Google API 溝通用的
Google API 會記錄你的使用狀況
(包括一天不能超過限制的使用次數 超過要付費 等等...)


我們要使用的查詢功能
在 Google 官方的服務 叫做 地理編碼服務 (Google Geocoding API)
可以參考這個網頁
http://code.google.com/intl/zh-TW/apis/maps/documentation/geocoding/

最快的方法是直接在剛剛給金鑰的那頁的最底下

http://maps.google.com/maps/geo?q=地址&output=json&oe=utf8&sensor=false&key=你的金鑰

紅色的部份(地址/金鑰) 就填入你要查詢的地址 跟剛剛拿到的金鑰
地址要用 php 的 urlencode 以免發生意外

使用這個 URL 去發一個 HTTP 的 GET request 會收到一個 json 的回覆


{
  "name": "台北市凱達格蘭大道",
  "Status": {
    "code": 200,
    "request": "geocode"
  },
  "Placemark": [ {
    "id": "p1",
    "address": "100台灣台北市中正區凱達格蘭大道",
    "AddressDetails": {
   "Accuracy" : 6,
   "Country" : {
      "AdministrativeArea" : {
         "AdministrativeAreaName" : "台北市",
         "Locality" : {
            "LocalityName" : "中正區",
            "PostalCode" : {
               "PostalCodeNumber" : "100"
            },
            "Thoroughfare" : {
               "ThoroughfareName" : "凱達格蘭大道"
            }
         }
      },
      "CountryName" : "台灣",
      "CountryNameCode" : "TW"
   }
},
    "ExtendedData": {
      "LatLonBox": {
        "north": 25.0422222,
        "south": 25.0381900,
        "east": 121.5174532,
        "west": 121.5129631
      }
    },
    "Point": {
      "coordinates": [ 121.5155764, 25.0396327, 0 ]
    }
  } ]
}


裡面有個 Point -> Coordinates 就是經緯度座標
然後只要拿兩個座標來做距離運算
就可以算出 "約略直線" 的距離
再來就是抓最近的 就是最近的店啦

管理者輸入的店地址 基本上是固定的
所以可以在把地址存到資料庫的時候 就一併把座標存到資料庫內

現在 MySQL 也有支援座標的資料格式
甚至可以直接 query 最近的點
這樣就不用另外寫 code 計算距離
(不過我還沒研究出來 之後再補)











  • 分享此文章
0則留言

相關文章

[都是屁系列] 我怎麼這麼天才 想到一個別人都沒想到

吃喜多方拉麵? 大安食堂 新潟市 - 2014 八重之櫻 Day2

如何自己做CDN

Google 的 VPS 雖然好用 但 Google 的頻寬好貴啊 如果網站常常要開大量的圖 費用就會噴很快 怎麼辦呢? 雖然單一雲使用上比較方便 但混合雲有時候比較省錢

千萬不要讓客戶任意拆解/組合你的服務項目 案例2

AI真的會讓軟體設計工程師失業嗎

我花了10分鐘串一個 open ai 的聊天機器人 寫了不到10行 code 我真的會因此失業嗎?

三十而退?

關於路老闆

推薦連結

  • Alice 你的理財陪跑教練
  • 羅鈞鴻/小虎老師
  • 徐慧玲Lynn
  • 寶寶牙醫 沈醫師
  • 保險資訊懶人包
  • 你的好感度教練
  • 天下為暢

聯絡我們

  • Email: louis@boss-louis.tw
  • 營業時間: 09:00~18:00
  • 聯絡電話: 02-77252950
  • 地址: 106 台北市大安區忠孝東路四段270號17樓
  • 隱私權政策
COPYRIGHT ©路老闆個人品牌網站 All rights reserved | Powered by 路老闆