我尝试使用google map api从地址文本中获取经度和纬度。
这是我尝试过的代码。
首先:
var locationService = new GoogleLocationService();
var point = locationService.GetLatLongFromAddress(business.Address2);
var latitude = point.Latitude;
var longitude = point.Longitude;
第二
IGeocoder geocoder = new GoogleGeocoder() { };
Address[] addresses = geocoder.Geocode(business.Address2).ToArray();
foreach (Address adrs in addresses)
{
var test = adrs.Coordinates;
}
第三
public RootObject GetLatLongByAddress(string address)
{
var root = new RootObject();
var url =string.Format(
"http://maps.googleapis.com/maps/api/geocode/json?address={0}&sensor=true_or_false", address);
var req = (HttpWebRequest)WebRequest.Create(url);
var res = (HttpWebResponse)req.GetResponse();
using (var streamreader = new StreamReader(res.GetResponseStream()))
{
var result = streamreader.ReadToEnd();
if (!string.IsNullOrWhiteSpace(result))
{
root = JsonConvert.DeserializeObject<RootObject>(result);
}
}
return root;
}
我的地址字符串是&#34; Ground Floor,Nishika Avenue,Swastik Char Rasta,Navrangpura,Narnarayan Complex对面,Ahmadabad&#34;
我已尽力尝试,但无论如何它都没有给我经纬度。
当我删除我的地址字符串的第一部分(即 Navrangpura,对面Narnarayan Complex,Ahmadabad )并尝试时,它会给我lat / long。
但是,当我在Google Map上搜索完整地址时,会显示结果。
为什么会这样?我错过了什么吗?
答案 0 :(得分:0)
地址&#39;一楼,Nishika Avenue,Swastik Char Rasta,Navrangpura,Narnarayan Complex对面,Ahmadabad&#39;也无法在maps.google.com上找到
API无法找到不存在的内容。您应该通过maps.google.com添加此地点,或者按照
更好地格式化地址字符串https://developers.google.com/maps/faq#geocoder_queryformat
希望它有所帮助!