web-dev-qa-db-fra.com

Chargement d'un objet geoJSON directement dans google maps v3

J'essaie de créer une carte, en utilisant des plans d'étage que j'ai stockés dans mongodb. Si je mets le JSON dans un fichier, je peux l'appeler en utilisant map.data.loadGeoJson('myfile.json')

Cependant, je ne veux pas enregistrer un fichier chaque fois que je crée une carte, et je préfère écrire un objet directement. Quelque chose comme ça:

var tempObject = {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "properties": {
          "letter": "G",
          "color": "blue",
          "rank": "7",
          "ascii": "71"
        },
        "geometry": {
          "type": "Polygon",
          "coordinates": [
            [
              [123.61, -22.14], [122.38, -21.73], [121.06, -21.69], [119.66, -22.22], [119.00, -23.40],
              [118.65, -24.76], [118.43, -26.07], [118.78, -27.56], [119.22, -28.57], [120.23, -29.49],
              [121.77, -29.87], [123.57, -29.64], [124.45, -29.03], [124.71, -27.95], [124.80, -26.70],
              [124.80, -25.60], [123.61, -25.64], [122.56, -25.64], [121.72, -25.72], [121.81, -26.62],
              [121.86, -26.98], [122.60, -26.90], [123.57, -27.05], [123.57, -27.68], [123.35, -28.18],
              [122.51, -28.38], [121.77, -28.26], [121.02, -27.91], [120.49, -27.21], [120.14, -26.50],
              [120.10, -25.64], [120.27, -24.52], [120.67, -23.68], [121.72, -23.32], [122.43, -23.48],
              [123.04, -24.04], [124.54, -24.28], [124.58, -23.20], [123.61, -22.14]
            ]
          ]
        }
      }
    ]
  };


  map.data.loadGeoJson(tempObject);

Cela ne fonctionne pas. Existe-t-il un autre moyen de tout charger à partir d'un seul objet, ou dois-je les enregistrer dans un fichier/construire des polygones individuels à l'aide de google.maps.Polygon()?

35
Itinerati

Utilisez la méthode addGeoJson de data au lieu de loadGeoJson. loadGeoJson attend une URL comme paramètre, pas un objet GeoJSON featurecollection.

map.data.addGeoJson(tempObject);

Vérifiez la référence: https://developers.google.com/maps/documentation/javascript/reference#Data

66
iH8