繁体   English   中英

使用Java或C#/。NET中的Internet地图服务查找两个地方之间的距离

Finding a distance between two places using internet map services in Java or C#/.NET

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我需要使用互联网地图服务(例如Google地图或Viamichelin)从Java或.NET应用程序计算两个地方之间的距离(由城市,国家/地区和邮政编码指定)。 我不希望它成为Web应用程序,并且我为Java找到的所有Google API都希望您使用Javascript。 我更喜欢Java,但.NET也可以。

它应该像这样工作:我在ma app中放置了2个地方->应用程序连接到地图服务,该服务计算距离并将其发送回我的应用程序中,我可以在其中使用它。

有谁知道最简单的方法(和合法的……他们在该API中有一些疯狂的使用条款)吗? 不管是Java还是.NET,但必须使用Google地图或Viamichelin地图服务器。

非常感谢您的回答。

2 个回复

这里

如果您将行车距离视为一项网络服务,则Google不提供。 直线距离很容易计算,不需要网络服务(尽管您可以使用一个地址对两个地址进行地理编码)。

http://www.movable-type.co.uk/scripts/latlong.html http://code.google.com/apis/maps/documentation/geocoding/index.html

这个问题的解决方案也可能会有所帮助

在您的项目中使用该类来获取两个地方之间的行驶距离。您可以从https://json.codeplex.com/releases/view/117958获得Newtonsoft.Json.Linq命名空间。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json.Linq;

namespace Management
{
    class DeliveryMapInfo
    {
    string origin = @""; //Write the address of the origin here
    public DeliveryMapInfo() { }
    public int getDistanceTo(string destination)
    {
        System.Threading.Thread.Sleep(1000);
        int distance = -1;
        string url = "http://maps.googleapis.com/maps/api/directions/json?origin=" + origin + "&destination=" + destination + "&sensor=false";
        string requesturl = url;string content = fileGetJSON(requesturl);
        JObject _Jobj = JObject.Parse(content);
        try
        {
            distance = (int)_Jobj.SelectToken("routes[0].legs[0].distance.value");
            return distance / 1000;// Distance in KMS
        }
        catch
        {
            return distance / 1000;
        }
    }
    protected string fileGetJSON(string fileName)
    {
        string _sData = string.Empty;
        string me = string.Empty;
        try
        {
            if (fileName.ToLower().IndexOf("http:") > -1)
            {
                System.Net.WebClient wc = new System.Net.WebClient();
                byte[] response = wc.DownloadData(fileName);
                _sData = System.Text.Encoding.ASCII.GetString(response);

            }
            else
            {
                System.IO.StreamReader sr = new System.IO.StreamReader(fileName);
                _sData = sr.ReadToEnd();
                sr.Close();
            }
        }
        catch { _sData = "unable to connect to server "; }
        return _sData;
    }
}

}

您的很多想法取决于您要使用的api。 距离矩阵,路线,地址解析等。注意:“ / directions /”我发现路线是我使用的最完整的api,因为它可以对地址进行地理编码,查找距离,查找持续时间等。但是,路线json文件的大小为比其他json文件大。 用你的判断。

string url = "http://maps.googleapis.com/maps/api/directions/json?origin=" + origin + "&destination=" + destination + "&sensor=false";

distance = (int)_Jobj.SelectToken("routes[0].legs[0].distance.value");

例如:

Directions json文件内部的结构为:

-Routes

    - Bound
        - NorthEast
        - SouthWest
    - Copyrights
    - Legs
        - Steps
            - duration
            - distance
            - endlocation
            - maneuver
            - htmlinstructions
            - polyline
            - startlocation
            - travelmode
        - Distance
            - text
            - value
        - Duration
            - test
            - value
        - StartAddress
        - EndAddress
        - EndLocation
            - lat
            - lng
        - StartLocation
            - lat
            - lng
    - Overview Polyline
    - Summary
    - Warnings
    - Waypoint Order

- Status
5 两个地方之间的距离

我实际上是想找到两个地方之间的距离,我是新手。 我开始了解openstreetmap。 但我不知道该怎么做。 我找到了一个使用osm路由的旅行推销员应用程序。 但在这里我的问题是如何在各个地方之间获得一个渗透。例如“ http://www.openstreetmap.org/api/ ...

7 如何通过道路找到两个地方之间的距离?我应该使用Json吗?如何从地图上提取距离并将其显示在textview上?

我找到了两个地理位置点,并得到了两个点之间的距离。但是它显示的是最短的距离。我想通过公路找到距离。如何使用它?我对JSON不太了解?终点如何通过道路找到距离??? 这是xml文件 这是使用google maps查找距离的链接。只需给出坐标即可。 Google地图测距仪 我 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM