计算两个地理点之间的最短路径?

2024-02-10

我是 Java 和 Android 新手。我需要找到两个路径点之间的最短路径。 我一整天都在寻找答案,我刚刚得到了这个代码:

var directionDisplay;
  var directionsService = new google.maps.DirectionsService();
  var map;

  function initialize() {
    directionsDisplay = new google.maps.DirectionsRenderer();
    var chicago = new google.maps.LatLng(41.850033, -87.6500523);
    var myOptions = {
      zoom:7,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: chicago
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    directionsDisplay.setMap(map);
  }

  function calcRoute() {
    var start = document.getElementById("start").value;
    var end = document.getElementById("end").value;
    var request = {
        origin:start, 
        destination:end,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
        routePath = result.routes[0].overview_path;
        for(var a = 0; a< routePath.length; a++){
          // Your vector layer to render points with line
        }
        directionsDisplay.setDirections(response);
      }
    });
  }

主要代码在这里:

      directionsService.route(request, function(response, status) {
              if (status == google.maps.DirectionsStatus.OK) {
                routePath = result.routes[0].overview_path;
                for(var a = 0; a< routePath.length; a++){
                  // Your vector layer to render points with line
                }
                directionsDisplay.setDirections(response);
              }
            });

问题是我想在Android 中实现这段代码。但我不知道怎么办。 有谁知道如何更改代码以便我可以在 Android 中使用它吗?

这里是链接来源This https://gis.stackexchange.com/questions/25253/computing-shortest-distance-using-google-map-v3-and-openlayers


有两种方法可以查找两个 GeoPoints 之间的距离:

  1. This 不使用互联网连接并使用一些数学知识计算两点之间的最短距离。

    /**** Method for Calculating distance between two locations ****/
    public float DistanceBetweenPlaces(double lat1, double lon1, double lat2, double lon2, Context cont) {
        float[] results = new float[1];
        Location.distanceBetween(lat1, lon1, lat2, lon2, results);
        return results[0];
    }
    
  2. This 使用互联网连接并使用 Google 地图 API检测两点之间的准确距离。实现它的代码如下:

    /**** Class for calculating the distance between two places ****/
    public class CalculateDistance {
         String distance;
         public void calculate_distance(String src_lat, String src_lng, String dest_lat, String dest_lng) {
             distance = getdistance(makeUrl(src_lat, src_lng, dest_lat, dest_lng));
         }
    
    /**** Method for make URL ****/
    private String makeUrl(String src_lat, String src_lng, String dest_lat, String dest_lng) {
        StringBuilder urlString = new StringBuilder();
        urlString.append("http://maps.googleapis.com/maps/api/distancematrix/json?");
        urlString.append("origins="); // from
        urlString.append(src_lat);
        urlString.append(",");
        urlString.append(src_lng);
        urlString.append("&destinations="); // to
        urlString.append(dest_lat);
        urlString.append(",");
        urlString.append(dest_lng);
        urlString.append("&sensor=true&mode=driving");
        return urlString.toString();
    }
    
    /**** Method for getting the distance between the two places ****/
    private String getdistance(String urlString) {
         URLConnection urlConnection = null;
         URL url = null;
         try {
              url = new URL(urlString.toString());
              urlConnection = url.openConnection();
              BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
    
              String line;
              StringBuffer sb = new StringBuffer();
              // take Google's legible JSON and turn it into one big string.
              while ((line = in.readLine()) != null) {
                    sb.append(line);
              }
              // turn that string into a JSON object
              JSONObject distanceMatrixObject = new JSONObject(sb.toString());
              // now get the JSON array that's inside that object
              if (distanceMatrixObject.getString("status").equalsIgnoreCase("OK")) {
                    JSONArray distanceArray = new JSONArray(distanceMatrixObject.getString("rows"));
                    JSONArray elementsArray = new JSONArray(distanceArray.getJSONObject(0).getString("elements"));
                    JSONObject distanceObject = new JSONObject(elementsArray.getJSONObject(0).getString("distance"));
                    return distanceObject.getString(("text"));
              }
         return null;
         } catch (Exception e) {
              return null;
              e.printStackTrace();
         }
      }
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算两个地理点之间的最短路径? 的相关文章

  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • 通过 node-http-proxy 保留基于 cookie 的会话

    我有一个简单的基于 Express 的 Node js Web 服务器 用于开发 JavaScript 应用程序 我将服务器设置为使用 node http proxy 来代理应用程序向在不同域和端口上运行的 Jetty 服务器发出的 API
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • Android - 如何更改 TimePicker 中的文本颜色?

    我正在使用 TimePicker 到 LinearLayout 中 背景颜色 黑色 但是 我看不到 TimePicker 中的数字 并且我需要在布局中将背景颜色设置为黑色 如何更改 TimePicker 中的 textColor 我已经尝试
  • Typeahead.js substringMatcher 函数说明

    我只是在做一些研究Typeahead js这是一个非常酷的图书馆 感谢文档 我已经成功地获得了一个基本的示例 该文档也非常好 但是我试图弄清楚以下代码块实际上在做什么 var substringMatcher function strs r
  • Nexus 7 (2013) 和 Win 7 64 - 尽管检查了许多论坛和在线资源,仍无法安装 USB 驱动程序

    我正在尝试设置 Nexus 7 2013 进行调试 但我在安装 USB 驱动程序的步骤中陷入困境 到目前为止 这是我尝试过的 采取的步骤 在 Nexus 7 2013 上打开调试模式 连接设备至 PC 下载 Google USB 驱动程序于
  • NoClassDefFoundError:无法解析:Landroid/support/v7/appcompat/R$styleable

    新手尝试完成 Google 提供的我的第一个应用程序教程 在这个致命异常的过程中 我确实导入了很多随机包来消除许多事情的 无法解析 错误 例如 ActionBarActivity EditText Fragment LayoutInflat
  • 将数组排序为第一个最小值、第一个最大值、第二个最小值、第二个最大值等

    编写一个JS程序 返回一个数组 其中第一个元素是第一个最小值 第二个元素是第一个最大值 依此类推 该程序包含一个函数 该函数接受一个参数 一个数组 该函数根据要求返回数组 输入示例 array 2 4 7 1 3 8 9 预期输出 1 9
  • 将 javascript 整数转换为字节数组并返回

    function intFromBytes x var val 0 for var i 0 i lt x length i val x i if i lt x length 1 val val lt lt 8 return val func
  • Twitter 嵌入时间轴小部件

    我继续下载http platform twitter com widgets js http platform twitter com widgets js And the http platform twitter com embed t
  • Chartjs刻度标签位置

    尝试让 Y 轴刻度标签看起来像image https i stack imgur com XgoxX png 位于秤顶部且不旋转 缩放选项当前如下所示 scales yAxes id temp scaleLabel display true
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • 当用户单击链接时,如何记录 MixPanel 事件?

    当用户单击某种类型的链接时 我试图在 MixPanel 中记录一个事件 我正在使用 JQuery 不引人注意地完成此操作 据我所知 我需要添加一个回调函数 以便在记录事件后将用户带到 URL 这是我正在使用的代码 不幸的是
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • FCM onMessageReceived 应用程序运行时返回空白消息和标题

    正如您在标题中所写 当应用程序关闭时 它运行良好 并且onMessageReceived获取消息正文和标题 但如果应用程序处于前台模式 运行模式 则可以发送通知 但没有消息和标题 请问该怎么办 代码 Override public void
  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • Android:解析 XML 数据的最佳解析器 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在开发一个应用程序 其中我第一次要解析来自远程服务器的 xml 文件中的数据 但我无法选择哪个解析器是有效的或最适合解析的 因为我知道主要有
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas

随机推荐

  • XPath - 属性通配符不返回具有名为 value 的属性的元素

    我正在尝试使用 XPath Java 来获取基于以特定值开头的未知属性的所有未知节点 由于某种原因 它没有返回包含名为的属性的节点value 我也测试过www freeformatter com xpath tester html http
  • 及时均匀地对位置时间序列进行重新采样

    正如地球科学中经常发生的那样 我有一系列位置 经度 纬度 时间序列的时间间隔不均匀 时间采样如下 t diff every position 3 99 1 00 3 00 4 00 3 98 3 99 我将位置与每个 t 相关联 lat 7
  • 读取 Jpeg2000 元数据

    我想找到一个具有 BSD MIT 或同等 许可证的开源库 该库能够读取 XML 或任何 元数据 jp2文件 迄今为止的研究 OpenJpeg https github com uclouvain openjpeg不读取元数据 EasyExi
  • 通过递归使用 XElement 动态构建 Xml

    我是 linq to Xml 的新手 我有一个递归方法作为参数XElement root它应该以表示给定递归深度的相关子树根的方式保存 XML 数据 void recursiveMethod XElement root 更具体地说 还可以看
  • 为什么 Scala 集合中没有不可变的双链表?

    看着this https stackoverflow com q 8039261 770361问题 提问者对某个元素的第一个和最后一个实例感兴趣List 似乎更有效的解决方案是使用DoubleLinkedList可以从列表末尾向后搜索 然而
  • pycharm 代码完成不适用于 SimpleNamespace

    为什么 SimpleNamespace 代码补全在 pycharm 编辑器中不起作用 from types import SimpleNamespace sn SimpleNamespace param a 1 sn pressing do
  • EmberJS 路线事件转换

    emberjs 1 0 0 rc 6 1 我的控制器 Application LoginController Ember Controller extend loginFailed false isProcessing false isSl
  • SIFT匹配和识别?

    我正在开发一个应用程序 其中使用 SIFT RANSAC 和单应性来查找对象 OpenCV C Java 我面临的问题是 在有很多异常值的地方 RANSAC 表现不佳 为此我想尝试一下SIFT的作者说的很好的办法 投票 我读过我们应该在 4
  • Inno Setup 自定义页面

    我想在选择安装位置的页面之后创建一个自定义向导页面 我已经了解了如何创建自定义页面并将其添加到向导中InitializeWizard程序 我的问题是 当我创建自定义页面时 安装位置选择的默认页面不再出现 我必须使用哪些选项来保留默认页面 安
  • 如何删除MySQL中的所有孤立记录?

    我有 3 个表 MySQL MyIsam user id message id userId archivedMessage id userId 如何删除所有没有消息且没有存档消息的用户 你可以使用not exists delete fro
  • MS访问函数vba,宏[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我在 MS Access 中制作报告时遇到一个小问题 我用 vba 编写了一个函数 并为 RunCode 函数 创建了一
  • JavaScript 从字符串中删除零宽度空格(unicode 8203)

    我正在编写一些处理网站内容的 JavaScript 当用户按退格键时 SharePoint 文本编辑器倾向于在文本中放置 零宽度空格 字符 这阻碍了我的努力 该字符的 unicode 值为 8203 即十六进制的 B200 我尝试使用默认的
  • 当 git pull 引起冲突但 git pull --rebase 没有冲突时,这意味着什么?

    我正在从只有我有权访问的存储库中提取数据 据我所知 我只从一个存储库推送到它 有几次 我尝试推动它并得到了这个 To email protected cdn cgi l email protection tsched dev git rej
  • 是否有更易读或 Pythonic 的方式将 Decimal 格式化为 2 位?

    将小数固定到两位的语法到底是怎么回事 gt gt gt from decimal import Decimal gt gt gt num Decimal 1 0 gt gt gt num quantize Decimal 10 2 seri
  • 无需在 go 中阅读即可查看 Conn

    我有一个服务器net Conn 我想在读出字节之前先查看一下它 以检查它是否是客户端尝试使用的纯文本协议或 SSL TLS 检查http golang org pkg net http golang org pkg net 看来Conn接口
  • 如何使用 mvc4 C# 在 linq toEntity 预加载中包含多个表

    我有 6 节课 我尝试使用linq到实体以获得SiglaUF最后一个更深层次的表的信息 在视图 MVC 中 问题是我收到以下错误 ObjectContext 实例已被处置 不能再用于需要连接的操作 视图是这样的 gt model IEnum
  • 数组中元素的确切最大限制是多少

    这是一个纯粹的理论问题 所以请不要在你的答案中警告我这一点 如果我没记错的话 因为 NET 中的每个数组都由Int32 意味着索引范围为0 to Int32 MaxValue 假设不涉及内存 GC 约束 NET 中的数组最多可以有21474
  • 如何将原始 html 文件添加到 create-react-app 中的公共文件夹

    我有一个使用 create react app 创建的 React 应用程序 我已经公开了一个静态 html 页面 我想在使用 iframe 的同一应用程序中使用该 html 构建后 带有 covid html 的 iframe 不会加载
  • jquery 延迟链接被跟踪

    我有一个基于 css 的简短动画 我想在链接之前播放它 一张在页面加载时突然进入的卡片在单击后突然弹出 然而 目前 调用的页面加载速度太快 我希望能够短暂延迟 href 的跟踪 这是我所得到的 document ready function
  • 计算两个地理点之间的最短路径?

    我是 Java 和 Android 新手 我需要找到两个路径点之间的最短路径 我一整天都在寻找答案 我刚刚得到了这个代码 var directionDisplay var directionsService new google maps