Diagrama utilizado
Exemplo original de https://github.com/google/open-location-code/issues/497
Usar https://mermaid.live/edit com o seguinte script
flowchart TD A[Enter a PlusCode] B[Split it into 2 parts] E[Resolves the name to an<br/>OLC-prefix through a <b><i>black box</i></b>] style E fill:black,stroke-width:2px,color:#fff,stroke-dasharray: 5 5 D[Concatenate prefix+sufix] A -->|598P+Q36 Itagui, Antioquia, Colombia| B E -->|olc_prefix=67R6| D B -->|name=Itagui, Antioquia, Colombia| E B -->|olc_suffix=598P+Q36| D D -->|olc=67R6598P+Q36| F[Decode OLC to<br/>Latitude-Longitude]
Traduzido para portugues:
Usar https://mermaid.live/edit com o seguinte script
flowchart TD A[Entrar com um PlusCode] B[Quebrar em 2 partes] E[Resolver o nome em um prefixo<br/> OLC através de uma <b><i>caixa preta</i></b>] style E fill:black,stroke-width:2px,color:#fff,stroke-dasharray: 5 5 D[Concatenar prefixo com sufixo] A -->|598P+Q3 Itagui, Antioquia, Colombia| B E -->|olc_prefixo=67R6| D B -->|nome=Itagui, Antioquia, Colombia| E B -->|olc_sufixo=598P+Q3| D D -->|olc=67R6598P+Q3| F[Decodificar OLC<br/>para Latitude-Longitude]
MELHOR e usando exemplo de Altamira, ver https://stackoverflow.com/q/58489357/287948
flowchart TD A[Enter a Plus Code] B[Split it into 2 parts] E[Find the<br/> reference-point of the <i>name</i><br/> in a black box] D["Convert to OLC by<br/><i>recoverNearest</i>(<i>shortCode</i>,<i>refPoint</i>)"] F[Convert OLC to LatLong point] A -->|<i>type</i>: GR7R+3C Ararunaquara - Altamira, PA, Brasil| B B -->|<i>name</i>=Ararunaquara - Altamira, PA, Brasil| E B -->|<i>shortCode</i>=GR7R+3C| D E-->|<i>refPoint</i>=Ararunaquara's LatLong| D D-->|<i>olc</i>=6889GR7R+3C| F style E fill:#000,color:#FFF
Para CV-Praia
flowchart TD A[Enter a Plus Code] B[Split it into 2 parts] E[Find the<br/> reference-point of the <i>name</i><br/> in a black box] D["Convert to OLC by<br/><i>recoverNearest</i>(<i>shortCode</i>,<i>refPoint</i>)"] F[Convert OLC to LatLong point] A -->|<i>type</i>: WF8Q+WF, Cape Verde, Praia| B B -->|<i>name</i>=Cape Verde, Praia| E B -->|<i>shortCode</i>=WF8Q+WF| D E-->|<i>refPoint</i>=Praia's LatLong| D D-->|<i>olc</i>=796RWF8Q+WF| F style E fill:#000,color:#FFF
Usando o ponto geo:14.9182,-23.5095 e nova versão inglês, com nomes padronizados:
flowchart TD A[Enter a Plus Code] B[Split it into 2 parts] E[<b>Name resolver</b>: finds the reference-point of the <i>name</i> in a black box] D["Convert to OLC by<br/><i>recoverNearest</i>(<i>shortCode</i>,<i>refPoint</i>)"] F[Convert OLC to LatLong point] A -->|<i>type</i>: WF9R+76, Praia, Cape Verde| B B -->|<i>localName</i>=Praia, Cape Verde| E B -->|<i>shortCode</i>=WF9R+76| D E -->|<i>refPoint</i>=Praia's LatLong| D D -->|<i>olc</i>=796RWF9R+76| F style E fill:#000,color:#FFF
Aplicando transparência na caixa-preta
Conforme o padrão OLC para encurtamento de códigos, descrito em https://github.com/google/open-location-code/blob/main/docs/specification.md#short-codes cada nome deveria ser associado a uma coordenada de ponto, por exemplo o centroide da cidade. Dado um ponto de interesse a codificar ou decodificar para OLC:
- encode: o sistema de resolução de nomes confere a distância do ponto aos candidatos e usa o mais próximo, desde que dentro da distância válida.
- decode: usa o prefixo eleito para decodificação. Conforme a posição do ponto de referência (ex. centroide da cidade) pode ser mais de um prefixo.