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 距离计算错误?

应用程序和谷歌地图中的距离之间的CLLocation差异

谷歌方向 API 行程时间与实时谷歌地图不同

DistanceMatrixService 提供与谷歌地图不同的距离

限制谷歌地图上的图标数量取决于缩放距离