【问题标题】:Latitude Longitude sorting纬度经度排序
【发布时间】:2016-10-11 22:35:17
【问题描述】:

我想对经纬度进行排序。

我有 10 个纬度/经度,我想在它们上面画一条路线,但我不知道哪个是起点,哪个是目的地。为此,我想对它们进行排序并绘制路线。

我的观点是这样的:

 [{lat:23.015422, long:72.540037},{lat:23.020320, long:72.557889},{lat:23.006890, long:72.563468},{lat:23.020873,long: 72.534372}]

有什么办法吗? Google 是否提供此功能?

【问题讨论】:

  • 你有什么尝试吗??
  • 不,因为我很困惑如何排序。谢谢
  • 你有什么提示吗?比如线条不应该交叉?你怎么说一种排序比另一种更好?
  • 是的,我认为我们会循环播放,比如第一个 lat long 比较其他,第二个比较其他等等......但我认为这不是完美的方式..

标签: java android google-maps


【解决方案1】:

实际上,您要创建的路线代表遵循该路径的点的正确顺序,除非您将它们与实际路线进行比较(尝试找到与您拥有的点子集匹配的路线)我不认为您将能够确定其中哪一个是起点或终点。

换句话说,如果您拥有阿尔巴塞特、巴塞罗那和卡塔赫纳的积分,那么旅行者可以从其中任何一个城市出发游览这三个城市。

【讨论】:

    【解决方案2】:

    由于您不想指定给定坐标中的哪一个是origin(发送Directions Request 时的必需参数),您可以使用的一个选项是连接每个LatLng 位置,如@987654322 中所述@。

    Polyline 对象由一组 LatLng 位置组成,并创建一系列线段,以有序的顺序连接这些位置。

    这是添加折线的示例代码,如文档所示:

    // This example creates a 2-pixel-wide red polyline showing the path of William
    // Kingsford Smith's first trans-Pacific flight between Oakland, CA, and
    // Brisbane, Australia.
    
    function initMap() {
      var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 3,
        center: {lat: 0, lng: -180},
        mapTypeId: 'terrain'
      });
    
      var flightPlanCoordinates = [
        {lat: 37.772, lng: -122.214},
        {lat: 21.291, lng: -157.821},
        {lat: -18.142, lng: 178.431},
        {lat: -27.467, lng: 153.027}
      ];
      var flightPath = new google.maps.Polyline({
        path: flightPlanCoordinates,
        geodesic: true,
        strokeColor: '#FF0000',
        strokeOpacity: 1.0,
        strokeWeight: 2
      });
    
      flightPath.setMap(map);
    }
    

    在能够连接所有给定坐标后,您还可以选择使用折线的可编辑和可拖动属性和Polyline class 来配置形状。

    为了帮助您进一步实施,您还可以参考此相关SO post 中的建议解决方案,其中还提供了工作代码 sn-ps。希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2018-11-13
      • 2013-09-09
      • 2022-10-18
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      相关资源
      最近更新 更多