我在谷歌地图上得到了不同的距离,当我在Xamarin中使用CalculateDistance((方法计算时。如何在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);
你永远无法获得与谷歌地图中显示的相同的距离,因为谷歌地图没有显示最短的距离,但它看到了许多其他东西,这将使汽车的距离与骑自行车或步行的距离不同。此外,由于某些道路因维修等原因而关闭,今天的距离可能与昨天不同。
因此,实现谷歌地图智能距离计算的唯一方法是使用自己的API。
1. 自行创建对谷歌地图 API 的请求
您可以直接将HTTP请求发送到Google maps API,然后处理结果。 您可以使用WebRequest伪造对Google API的请求。为此,您需要一个地图 API 密钥。
查看 Google Maps API 文档(在 Web Service 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();
}
}
}