Xamarin 和谷歌地图上的不同距离
Posted
技术标签:
【中文标题】Xamarin 和谷歌地图上的不同距离【英文标题】:Different distance on Xamarin and Google maps 【发布时间】:2019-09-26 14:03:42 【问题描述】:当我在 Xamarin 中使用 CalculateDistance() 方法计算时,我在 Google 地图上获得了不同的距离。如何计算 Xamarin 中的行驶距离?有什么方法可以用来计算 c# / Xamarin 中的地图距离吗?
以下代码计算两个位置之间的距离。但这与谷歌地图上的行驶距离不同。
var location = new Location(21.705723, 72.998199);
var otherLocation = new Location(22.3142, 73.1752);
double distance = location.CalculateDistance(otherLocation,DistanceUnits.Kilometers);
【问题讨论】:
这段代码是直接点对点的,但你说谷歌地图是“行驶距离”,包括转弯等。为什么你会期望它们是一样的? 【参考方案1】:您永远无法获得谷歌地图中显示的相同距离,因为谷歌地图没有显示最短距离,但它会看到许多其他的东西,这会使汽车的距离与骑自行车或骑自行车的距离不同走。另外,今天的距离可能与昨天有所不同,因为有些路段正在封闭维修等。
所以,实现谷歌地图智能距离计算的唯一方法就是使用自己的API
1.自行创建对 Google Maps API 的请求
您可以将 HTTP 请求发送到 google maps API,然后处理结果。 您可以使用 WebRequest 伪造对 google api 的请求。为此,您需要 Maps API Key。
查看Google Maps Api Documentation(在 Web 服务 API 下),其中列出了所有请求参数和示例响应。
C# 示例
protected void Page_Load(object sender, EventArgs e)
string origin = "Oberoi Mall, Goregaon";
string destination = "Infinity IT Park, Malad East";
string url = "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=" +
origin + "&destinations=" + destination + "&key=CKzaDyBE188Pm_TZXCC_x5Gt67FU5vC9mEPw1";
WebRequest request = WebRequest.Create(url);
using (WebResponse response = (HttpWebResponse)request.GetResponse())
using (StreamReader reader = new
StreamReader(response.GetResponseStream(), Encoding.UTF8))
DataSet dsResult = new DataSet();
dsResult.ReadXml(reader);
duration.Text = dsResult.Tables["duration"].Rows[0]["text"].ToString();
distance.Text = dsResult.Tables["distance"].Rows[0]["text"].ToString();
【讨论】:
以上是关于Xamarin 和谷歌地图上的不同距离的主要内容,如果未能解决你的问题,请参考以下文章
与在线工具和谷歌地图相比,为啥我的 Python hasrsine 距离计算错误?