Kontury budynków i wejścia

Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

Użyj interfejsu Geocoding API, aby uzyskać kontury budynków i wejścia, co pozwoli Ci ulepszyć wizualizację danych na renderowanych mapach.

Aby to zrobić, dodaj do żądania geokodowania dodatkowy parametr, który będzie zwracać pary współrzędnych geograficznych (szerokość i długość geograficzna) określające kontur budynku lub wejście. Używaj wyników zapytań do rysowania konturów budynków i wskazywania wejść do nich na mapie.

  • Obrys budynku to zbiór par współrzędnych geograficznych, które definiują wielokąt 2D reprezentujący powierzchnię Ziemi zajmowaną przez budynek.
  • Wejście do budynku to pojedyncza para współrzędnych szerokości i długości geograficznej, która określa lokalizację punktu wejścia i wyjścia z miejsca.

Użytkowanie i zasięg

Usługa umożliwia zwracanie wielokątów konturów dla jednego miejsca w ramach jednego żądania. Oznacza to, że żądanie geokodu na poziomie miasta, np. Londyn, Wielka Brytania, nie zwraca wszystkich konturów budynków w tej miejscowości. W takich przypadkach usługa zwraca standardową odpowiedź geokodowania bez konturów budynków ani wejść. Usługa generuje kontury i wejścia tylko w przypadku tych typów miejsc:

Obsługiwane typy miejsc

Budynek

Wejścia

premise

premise

subpremise

subpremise

point_of_interest

point_of_interest

street_address

Ta funkcja jest dostępna we wszystkich regionach, ale jej zasięg różni się w zależności od regionu. Ponadto możesz oczekiwać odpowiedzi interfejsu API zawierających zarys budynku, ale bez danych o wejściach. W takim przypadku usługa zwróci odpowiedź geokodowania z konturem budynku, ale bez tablicy danych wejściowych. Usługa stale pracuje nad zwiększeniem zasięgu wejść.

Szczegóły prośby

Kontury budynków i współrzędne wejść możesz uzyskać w tych rodzajach żądań:

W przypadku każdej z tych próśb podaj ten parametr:extra_computations=BUILDING_AND_ENTRANCES.

Przykładowe żądanie

To zapytanie korzysta z geokodowania miejsca, aby uzyskać informacje o wejściu i konturze restauracji w Mountain View w Kalifornii w Stanach Zjednoczonych:

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJl2tj2-62j4ARzKWl1WCXLJI&extra_computations=BUILDING_AND_ENTRANCES&key=YOUR_API_KEY

Przykładowa odpowiedź

W większości przypadków odpowiedź zawiera jeden budynek wraz z znanymi wejściami do niego. W niektórych przypadkach odpowiedź może jednak zawierać wiele budynków, np. w przypadku punktów orientacyjnych, które zajmują kilka budynków. Budynki i wejścia są reprezentowane przez te 2 tablice:

buildings[] Tablica z co najmniej 1 budynkiem. Każdy budynek zawiera te pola:

  • place_id

    Unikalny identyfikator budynku. Więcej informacji znajdziesz w omówieniu identyfikatorów miejsc.

  • building_outlines[]

    Tablica konturów powiązanych z budynkiem. Ta tablica ma tylko 1 element. Każdy obiekt w polu building_outlines[] ma to pole:

    • display_polygon

    Kodowanie GeoJSON wielokąta, który przybliża powierzchnię Ziemi zajmowaną przez budynek, w formacie RFC 7946.

Tablica entrances[] z tymi polami:

  • location

    Współrzędne geograficzne wejścia.

  • building_place_id

    Identyfikator miejsca budynku w buildings[], w którym znajduje się to wejście. Dzięki temu możesz określić, w których budynkach znajdują się poszczególne wejścia. To wejście odpowiada budynkowi o indeksie ibuildings[], gdzie buildings[i].place_id jest równe building_place_id tego wejścia. Uwaga: ta wartość różni się od identyfikatora miejsca wyniku geokodowania, chyba że wynik geokodowania dotyczy samego budynku. Ten parametr nie zawsze będzie wypełniony.

  • entrance_tags[]

    Tablica tagów wejścia opisujących jego cechy. Obsługiwana jest ta wartość:

    • "PREFERRED"

      Wskazuje, że to wejście prawdopodobnie zapewnia fizyczny dostęp do zwróconego miejsca. Miejsce może mieć wiele preferowanych wejść. Jeśli wejście nie ma tego tagu, oznacza to, że znajduje się w tym samym budynku, ale niekoniecznie zapewnia dostęp do miejsca.

      Jeśli na przykład zwrócone miejsce to restauracja w centrum handlowym, "PREFERRED"wejścia będą prowadzić do samej restauracji, a pozostałe zwrócone wejścia będą innymi wejściami do budynku, np. do innych restauracji w centrum handlowym.

      Jeśli zwrócone miejsce jest budynkiem, wejścia "PREFERRED" będą prowadzić do „głównej” części budynku. Na przykład w centrum handlowym "PREFERRED" wejścia to te, które umożliwiają dostęp do głównego holu. Jeśli jednak wejście zapewnia dostęp tylko do sklepu z boku budynku, nie będzie to "PREFERRED" wejście.

Obraz poniżej przedstawia wizualizację konturu budynku i wejść zwróconych w odpowiedzi na przykładowe żądanie powyżej.

Zarys budynku i 2 wejścia na mapie. Wejście PREFERRED jest oznaczone większą ikoną niż pozostałe wejścia.

Odpowiedź na przykładowe żądanie powyżej pokazuje 2 wejścia i 1 budynek z konturem. Zwróć uwagę, że building_place_id każdego wejścia pasuje do place_id budynku:

{
  "entrances": [
    {
        "building_place_id" : "ChIJU1erIO-2j4ARzlavxpYBJr8",
        "location" :
        {
          "lat" : 37.3736684,
          "lng" : -122.0540469
        },
        "entrance_tags": ["PREFERRED"]
    },
    {
        "building_place_id" : "ChIJU1erIO-2j4ARzlavxpYBJr8",
        "location" :
        {
          "lat" : 37.3738239,
          "lng" : -122.0539773
        },
    }
  ],
  "buildings" : [
    {
      "building_outlines" : [
        {
          "display_polygon" : {
            "coordinates" : [
              [
                [
                  -122.054453349467,
                  37.3742345734776
                ],
                [
                  -122.054665964955,
                  37.3737591984554
                ],
                [
                  -122.054080317537,
                  37.3735936952922
                ],
                [
                  -122.053867527481,
                  37.374069124071
                ],
                [
                  -122.054453349467,
                  37.3742345734776
                ]
              ]
            ],
            "type" : "Polygon"
          }
        }
      ],
      "place_id" : "ChIJU1erIO-2j4ARzlavxpYBJr8"
    }
  ],
}

Wyświetlanie zarysów budynków na mapie

Interfejs JavaScript API ma wbudowaną obsługę wyświetlania wielokątów i wielokątów złożonych w formacie RFC 7946. Aby to zrobić:

  1. Utwórz obiekt cechy za pomocą danych wielokąta.
  2. Zastosuj styl do wielokąta.
  3. Dołącz funkcję do obiektu mapy JavaScript.

Każdy obiekt w tablicy buildings zawiera pojedynczy obiekt w tablicy building_outlines. Ten przykład pokazuje, jak wyświetlić zarys budynku na mapie:

//This function takes an argument of 'buildings', which is the buildings[] array returned by the API.
async function displayBuildingOutline(buildings) {
    try {
        //Import the Google Maps Data library.
        const { Data } = await google.maps.importLibrary("maps")
        //Loop though the array of building outlines.
        buildings.forEach(building => {
            const features = []
            const buildingOutlines = building.building_outlines;
            //Add each building outline to a Feature object, and push this to an array of Features.
            buildingOutlines.forEach(buildingOutline => {
                const feature = {
                    type: "Feature",
                    properties: {},
                    geometry: buildingOutline.display_polygon
                }
                features.push(feature);
            });
            //Create a new Google Maps Data object, and apply styling.
            //We also assume the reference to the map on the page is named 'map'.
            //This applies the Data object to the map on the page.
            outlineLayer = new google.maps.Data({
                map,
                style: {
                    strokeColor: "#0085cc",
                    strokeOpacity: 1,
                    strokeWeight: 2,
                    fillColor: "#88d4fc",
                    fillOpacity: 0.5,
                },
            });
            //Add the array of Features created earlier to the Data object, as GeoJson.
            outlineLayer.addGeoJson({
                type: "FeatureCollection",
                features: features,
            });
        });
    } catch (e) {
        console.log('Building outlines failed. Error: ' + e)
    }
}

Korzystając z powyższego kodu, kontur budynku zwrócony przez interfejs Geocoding API w przykładzie odpowiedzi podanym wcześniej w tym dokumencie jest renderowany na mapie w ten sposób:

Zarys budynku wyświetlony na mapie

Obsługa odpowiedzi z wieloma budynkami lub ich konturami

Możesz też napotkać te sytuacje, ale powyższy przykładowy kod nadal będzie w nich działać:

  1. Pojedynczy obiekt building_outlines reprezentujący wiele wielokątów.
  2. Odpowiedź z wieloma budynkami w tablicy buildings[].

Na przykład odpowiedź dla identyfikatora miejsca ChIJGxgH9QBVHBYRl13JmZ0BFgo zawiera 2 budynki w tablicy buildings[]:

"buildings": [
    {
        "building_outlines": [
            {
                "display_polygon": {
                    "coordinates": [
                        [
                            [
                                44.3313253363354,
                                13.636033631612
                            ],
                            [
                                44.3312576355624,
                                13.6362094887862
                            ],
                            [
                                44.3310854239923,
                                13.6361461767801
                            ],
                            [
                                44.3311531250111,
                                13.6359703194634
                            ],
                            [
                                44.3313253363354,
                                13.636033631612
                            ]
                        ]
                    ],
                    "type": "Polygon"
                }
            }
        ],
        "place_id": "ChIJ24NWUBhUHBYRSEmPBFa1wgc"
    },
    {
        "building_outlines": [
            {
                "display_polygon": {
                    "coordinates": [
                        [
                            [
                                44.330737534504,
                                13.6357057440832
                            ],
                            [
                                44.3307248314371,
                                13.6357390350529
                            ],
                            [
                                44.3306985591742,
                                13.635729486373
                            ],
                            [
                                44.3307114066013,
                                13.6356960265536
                            ],
                            [
                                44.330737534504,
                                13.6357057440832
                            ]
                        ]
                    ],
                    "type": "Polygon"
                }
            }
        ],
        "place_id": "ChIJpzQOABlUHBYRxiOC9goY1fE"
    }
]

Korzystając z przykładowego kodu JavaScript powyżej, możemy renderować na mapie kontury budynków:

Dwa zarysy budynków wyświetlane na mapie

Prześlij opinię

To funkcja eksperymentalna. Będziemy wdzięczni za Twoją opinię. Możesz ją przesłać na adres [email protected].