【问题标题】:ios map snap to road implementationios map snap to road实现
【发布时间】:2013-11-16 12:27:20
【问题描述】:

我是独立 IOS 开发人员,正在尝试构建应用程序轮流导航。 现在我正在使用谷歌地图和谷歌路线导航服务

问题:由于 GPS 精度限制,用户位置大部分时间都在路外。我试图实现“对齐道路:地图匹配”但没有成功。我没有弄清楚算法

我应该从哪里开始,我应该使用 mapkit 而不是谷歌地图?打开街道地图?

请给我链接到道路算法

【问题讨论】:

    标签: ios algorithm google-maps mapkit openstreetmap


    【解决方案1】:

    Apple 有 MKDirectionRequest,您可以通过它获取路线折线。要获得折线,您可以传递源、目标。但我看到您使用的是 GPS 设备,因此可能有很多路点,用户可以通过任何可能的路径导航。因此您可以获取每个点的方向并在地图上绘制每个纬度/经度组合的路线。但是它的性能稍慢一点,苹果也不允许您拨打多个电话(我注意到> 50 / sec可能会失败)。我仍在研究苹果是否有类似谷歌的道路 API。

    苹果和谷歌的方向请求都不会给出用户对 GPS 纬度/经度的期望的 100% 结果。

    根据我的研究,我发现 Snap to road API 提供了更接近 GPS 轨迹的路径。但是有些路线偏离了道路。我希望谷歌将来可以提高准确性。我也希望市场在未来的版本中提供 snap to road API。

    https://developers.google.com/maps/documentation/roads/snap

    使用道路检查器,您可以检查经纬度路径,是否正确捕捉到道路: https://developers.google.com/maps/documentation/roads/inspector

    检查上面的网址。

    它有一个javascript示例请求和解析代码。

    请求示例: https://roads.googleapis.com/v1/snapToRoads?path=-35.27801,149.12958|-35.28032,149.12907|-35.28099,149.12929|-35.28144,149.12984|-35.28194,149.13003|-35.28282,149.12956|-35.28302,149.12881|-35.28473,149.12836&interpolate=true&key=YOUR_API_KEY

    Response:
    {
      "snappedPoints": [
        {
          "location": {
            "latitude": -35.2784167,
            "longitude": 149.1294692
          },
          "originalIndex": 0,
          "placeId": "ChIJoR7CemhNFmsRQB9QbW7qABM"
        },
        {
          "location": {
            "latitude": -35.280321693840129,
            "longitude": 149.12908274880189
          },
          "originalIndex": 1,
          "placeId": "ChIJiy6YT2hNFmsRkHZAbW7qABM"
        },
        {
          "location": {
            "latitude": -35.2803415,
            "longitude": 149.1290788
          },
          "placeId": "ChIJiy6YT2hNFmsRkHZAbW7qABM"
        },
        {
          "location": {
            "latitude": -35.2803415,
            "longitude": 149.1290788
          },
          "placeId": "ChIJI2FUTGhNFmsRcHpAbW7qABM"
        },
        {
          "location": {
            "latitude": -35.280451499999991,
            "longitude": 149.1290784
          },
          "placeId": "ChIJI2FUTGhNFmsRcHpAbW7qABM"
        },
        {
          "location": {
            "latitude": -35.2805167,
            "longitude": 149.1290879
          },
          "placeId": "ChIJI2FUTGhNFmsRcHpAbW7qABM"
        },
        {
          "location": {
            "latitude": -35.2805901,
            "longitude": 149.1291104
          },
          "placeId": "ChIJI2FUTGhNFmsRcHpAbW7qABM"
        },
        {
          "location": {
            "latitude": -35.2805901,
            "longitude": 149.1291104
          },
          "placeId": "ChIJW9R7smlNFmsRMH1AbW7qABM"
        },
        {
          "location": {
            "latitude": -35.280734599999995,
            "longitude": 149.1291517
          },
          "placeId": "ChIJW9R7smlNFmsRMH1AbW7qABM"
        },
        {
          "location": {
            "latitude": -35.2807852,
            "longitude": 149.1291716
          },
          "placeId": "ChIJW9R7smlNFmsRMH1AbW7qABM"
        },
        {
          "location": {
            "latitude": -35.2808499,
            "longitude": 149.1292099
          },
          "placeId": "ChIJW9R7smlNFmsRMH1AbW7qABM"
        },
        {
          "location": {
            "latitude": -35.280923099999995,
            "longitude": 149.129278
          },
          "placeId": "ChIJW9R7smlNFmsRMH1AbW7qABM"
        },
        {
          "location": {
            "latitude": -35.280960897210818,
            "longitude": 149.1293250692261
          },
          "originalIndex": 2,
          "placeId": "ChIJW9R7smlNFmsRMH1AbW7qABM"
        },
        ... results truncated ...
        {
          "location": {
            "latitude": -35.284728724835304,
            "longitude": 149.12835061713685
          },
          "originalIndex": 7,
          "placeId": "ChIJW5JAZmpNFmsRegG0-Jc80sM"
        }
      ]
    }
    

    【讨论】:

      【解决方案2】:

      首先计算 GPS 的不准确程度。定位有什么错误? 计算尽可能多的测试中的最大误差。然后评估最大误差半径内最近的道路。

      注意:-这个猜测可能会出错,概率很低。

      【讨论】:

      • 这种方法太天真了,你有非常接近彼此的“道路”并不少见(“不正确”的道路)更接近轨道。如果有什么必须添加稳定性因素 - 即以前使用过哪条道路,以及是否有可能在任意点改变道路。
      猜你喜欢
      • 2016-07-17
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多