Waypoint

Um waypoint representa uma parada do pedido. Todo pedido irá ter no mínimo 2 waypoints, e no máximo 9.

A loggi precisa duas informações precisas para efetuar o pedido:

  • Um par de lat long, a geo localização do ponto.
  • Descrição do endereço normalizada em componentes.

Uma representação de waypoints tem os seguintes campos:

  • address_complement: Complemento do endereço (ex “Apto 102”), enviar null se não há complemento.
  • instructions: Instruções ao motorista (Ex: “Pegar pacote com Carla”). Obrigatório.
  • geometry.location: Hash com lat e long encodados com SRID 4326 (projeção utilizada pelo Google Maps).
  • address_data: hash com dados normalizados para númro, rua, bairro, cidade, cep e pais.

Um exemplo de waypoint:

{
      "address_complement":"cjto 303", // optional, send null if not available
      "instructions":"Pegar o Envelope com a Dona Araçy", // required
      "address_data":{
        "address_components":[
          {
            "long_name":"200",
            "short_name":"200",
            "types":[
              "street_number"
            ]
          },
          {
            "long_name":"Avenida Paulista",
            "short_name":"Av. Paulista",
            "types":[
              "route"
            ]
          },
          {
            "long_name":"Bela Vista",
            "short_name":"Bela Vista",
            "types":[
              "sublocality",
              "political"
            ]
          },
          {
            "long_name":"São Paulo",
            "short_name":"São Paulo",
            "types":[
              "locality",
              "political"
            ]
          },
          {
            "long_name":"São Paulo",
            "short_name":"SP",
            "types":[
              "administrative_area_level_1",
              "political"
            ]
          },
          {
            "long_name":"República Federativa do Brasil",
            "short_name":"BR",
            "types":[
              "country",
              "political"
            ]
          },
          {
            "long_name":"01310-000",
            "short_name":"01310-000",
            "types":[
              "postal_code"
            ]
          }
        ],
        "geometry":{
          "location":{
            "lat":-23.5702881,
            "lng":-46.645419300000015,
          }
        },
      },
    },
 }

Esta representação pode parecer complexa, e é. Mas ela evita as ambiguidades e permite que se saiba corretamente os endereços. Nós usamos exatamente a mesma representação que o geo coder GoogleMaps, Portanto, a maneira mais segura de gerar estas informações é enviar uma requisição ao geo-encoder do Google Maps com a seguinte formatação:

"[tipo do logradouro] [logradouro], [número], [Cidade], [CEP], [Pais]"

Por exemplo:

`Rua Sampaio Vidal, 1140 - Pinheiros, São Paulo, 01443-001, Brazil`

Mais informações na documentação da API de geocoding do Google Maps.

Se você não pode utilizar a API deles, pode montar o objeto address_data desde que esteja seguro de seus dados.