1

我目前正在做一个项目,我想自动添加有关公司或专业人士的信息。我知道有一个 Waze API(由 Google 托管),但它们不提供添加或修改地图信息的可能性。有一种“UI 方式”可以使用地图编辑器修改地图信息。如果有人有一个棘手的解决方案......我会接受它!

4

1 回答 1

2

这是可能的,但并不容易。

您可以模仿 Web 浏览器发出的调用,以便在 Waze 地图编辑器中添加地点(使用浏览器的网络监视器查看发送了哪些请求)。基本上,您需要加载索引页面以检索会话令牌 cookie,使用该令牌和您的登录凭据启动会话,然后在您在编辑器中保存编辑时发送您发送的数据(它在这个请求中您将调整要添加的位置以及要添加的位置)。您需要注意的主要事情是,对于每个请求,cookie 都会使用新的 CSRF 令牌进行更新。

登录后,以下 URL 可以接收 HTTP POST 请求:https://www.waze.com/row-Descartes/app/Features?language=en带有例如以下数据:

{
  'actions': {
    'name': 'CompositeAction',
    '_subActions': [
      {
        'name': 'AddLandmark',
        '_subActions': [
          {
            '_objectType': 'venue',
            'action': 'ADD',
            'attributes': {
              'geometry': {
                'type': 'Point',
                'coordinates': [
                  ??.????,
                  ??.????
                ]
              },
              'categories': [
                'OTHER'
              ],
              'name': '',
              'description': '',
              'rank': 0,
              'lockRank': 0,
              'url': null,
              'phone': null,
              'brand': null,
              'residential': false,
              'openingHours': [
              ],
              'categoryAttributes': {
              },
              'services': [
              ],
              'entryExitPoints': [
              ],
              'images': [
              ],
              'venueUpdateRequests': [
              ],
              'aliases': [
              ],
              'approved': true,
              'externalProviderIDs': [
              ],
              'adLocked': false,
              'permissions': 2147483647,
              'streetID': ????,
              'id': - 100
            }
          }
        ]
      },
      {
        '_objectType': 'venue',
        'action': 'UPDATE',
        'attributes': {
          'name': 'Test',
          'id': - 100
        }
      },
      {
        '_objectType': 'venue',
        'action': 'UPDATE',
        'attributes': {
          'description': 'To remove',
          'id': - 100
        }
      }
    ]
  }
}

如您所见,您需要填写坐标(我假设您将拥有)和其他各种字段。最好您可以指定该地点所在的确切地址,但这需要您检索附近街道的 ID。如果您不想遇到麻烦,也可以省略 streetID 字段。我已经对其进行了测试,并且效果很好。

此外,在 WME 中,此更改分为几个单独的操作(“复合”操作)。您可以将所有数据放在第一个操作中,然后删除两个更新操作。

不久前,我在 Java 中制作了类似的东西,以收听 Waze Map Editor 中的聊天。部分日志记录在那里完美无缺,因此可以完成。

2018 年 3 月 14 日更新: 至于在 Waze 中添加/编辑地点的官方方式,如果您可以被认可为关联的公民合作伙伴:可以向 Waze 提供包含地点列表的提要。更多信息可在Waze 合作伙伴帮助 > 互联公民 > 停车、加油、除雪机和其他信息中找到

于 2017-08-11T08:19:27.300 回答