Oihana Next UI - 0.48.0

Application logo

Modèle & adaptateur

Aucune carte ici : ce que les helpers « geo » tirent d'une charge utile schema.org, en clair.

Un point, quelle que soit la forme de la source

L'adaptateur lit les propriétés, jamais « @type » — un objet qui porte une latitude et une longitude est un point, quel que soit son nom.

Place avec geo

{
  "@type": "Place",
  "name": "Notre-Dame de Paris",
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 48.852968,
    "longitude": 2.349902
  }
}

48.852968, 2.349902

48°51'10.7"N, 2°20'59.6"E

latitude 48.852968 · longitude 2.349902

Warehouse à plat

{
  "@type": "Warehouse",
  "name": "Entrepôt de Rungis",
  "latitude": 48.7489,
  "longitude": 2.3606
}

48.748900, 2.360600

48°44'56.0"N, 2°21'38.2"E

latitude 48.7489 · longitude 2.3606

GeoCoordinates, valeurs en chaînes

{
  "@type": "GeoCoordinates",
  "latitude": "44.837789",
  "longitude": "-0.579180",
  "elevation": 20
}

44.837789, -0.579180

44°50'16.0"N, 0°34'45.0"W

latitude 44.837789 · longitude -0.57918 · altitude 20 m

Latitude hors bornes

{
  "@type": "Place",
  "name": "Coordonnée impossible",
  "latitude": 148.5,
  "longitude": 2.35
}

null

Rendu « null » plutôt qu'une exception : une carte à laquelle il manque un point reste une carte.

Quand une Place dit deux choses

Le même objet porte « geo » et ses propres latitude/longitude, avec des valeurs différentes. « prefer » décide laquelle gagne.

Place portant les deux

{
  "@type": "Place",
  "name": "Deux sources qui divergent",
  "geo": {
    "latitude": 48.852968,
    "longitude": 2.349902
  },
  "latitude": 44.837789,
  "longitude": -0.57918
}

Par défaut — prefer : 'geo'

48.852968, 2.349902

48°51'10.7"N, 2°20'59.6"E

latitude 48.852968 · longitude 2.349902

Forcé — prefer : 'flat'

44.837789, -0.579180

44°50'16.0"N, 0°34'45.0"W

latitude 44.837789 · longitude -0.57918

Les géométries, et l'inversion des axes

schema.org écrit « latitude longitude » en texte, GeoJSON écrit « [ longitude , latitude ] » en tableau. C'est ici, et nulle part ailleurs, que la bascule a lieu.

Polygon — l'anneau est refermé

{
  "@type": "GeoShape",
  "polygon": "48.845 2.32 48.865 2.32 48.865 2.37 48.845 2.37"
}
{
  "type": "Feature",
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          2.32,
          48.845
        ],
        [
          2.32,
          48.865
        ],
        [
          2.37,
          48.865
        ],
        [
          2.37,
          48.845
        ],
        [
          2.32,
          48.845
        ]
      ]
    ]
  },
  "properties": {
    "shape": "polygon"
  }
}

Circle — un Point plus un rayon

{
  "@type": "GeoShape",
  "circle": "48.8566 2.3522 1500"
}
{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [
      2.3522,
      48.8566
    ]
  },
  "properties": {
    "shape": "circle",
    "radius": 1500
  }
}

Box — deux coins, quatre côtés

{
  "@type": "GeoShape",
  "box": "48.80 2.25 48.90 2.42"
}
{
  "type": "Feature",
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          2.25,
          48.8
        ],
        [
          2.42,
          48.8
        ],
        [
          2.42,
          48.9
        ],
        [
          2.25,
          48.9
        ],
        [
          2.25,
          48.8
        ]
      ]
    ]
  },
  "properties": {
    "shape": "box"
  }
}

La collection GeoJSON

Ce qu'une source vectorielle consomme. Le point hors bornes est écarté plutôt que placé à zéro.

1{
2  "type": "FeatureCollection",
3  "features": [
4    {
5      "type": "Feature",
6      "geometry": {
7        "type": "Point",
8        "coordinates": [
9          2.349902,
10          48.852968
11        ]
12      },
13      "properties": {
14        "name": "Notre-Dame de Paris"
15      }
16    },
17    {
18      "type": "Feature",
19      "geometry": {
20        "type": "Point",
21        "coordinates": [
22          2.3606,
23          48.7489
24        ]
25      },
26      "properties": {
27        "name": "Entrepôt de Rungis"
28      }
29    }
30  ]
31}