根據地址名稱通過百度地圖API查詢出坐標
百度地圖ApiUrl
`string url = "http://api.map.baidu.com/geocoder?address={0}&output=json&key=這里用自己申請的key" ` ``` //查詢出門店列表 string sql = "select shopid, shopName,shopadress, lat ,lng as lon from Shop"; //單個門店的情況 if (shopid!=0) { sql += " where shopid=" + shopid; } DataTable PlaceDt = kis_web.DBHelper.GetTable(sql);
foreach (DataRow row in PlaceDt.Rows)
{
//請求
var request = (HttpWebRequest)WebRequest.Create(string.Format(url, row["shopadress"]));
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
//請求結果
JObject jo = (JObject)JsonConvert.DeserializeObject(responseString);
//有些地址是查詢不出來result的,因此要做個判斷
if (string.Equals(jo["status"].ToString(), "OK") && jo["result"].ToString() != "[]")
{
string lat = jo["result"]["location"]["lat"].ToString();
string lng = jo["result"]["location"]["lng"].ToString();
//修改數據庫中的門店坐標地址
string updateSql = "UPDATE Shop SET lat = '{0}',lng = '{1}' WHERE shopid ='{2}'";
int result = kis_web.DBHelper.ExeSQLs(string.Format(updateSql, lat, lng, row["shopid"]));
}
}
#測試DEMO可以直接賦值使用
string url = "http://api.map.baidu.com/geocoder?address={0}&output=json&key=key";
var request = (HttpWebRequest)WebRequest.Create(string.Format(url, "廣州"));
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
JObject jo = (JObject)JsonConvert.DeserializeObject(responseString);
string lng = jo["result"]["location"]["lng"].ToString();
string lat = jo["result"]["location"]["lat"].ToString();
Response.Write(lng + "|" + lat);
---
*相關命名空間*
using Newtonsoft.Json;
using System.Net;
using Newtonsoft.Json.Linq;
*通過上訴的操作,這樣就可以將數據庫中擁有地址的門店賦值坐標*