Omówienie
Ten samouczek pokazuje, jak wyświetlać informacje z pliku KML na mapie i w bocznym panelu w Mapach Google. Więcej informacji o używaniu plików KML na mapach znajdziesz w przewodniku po warstwach KML. Kliknij znacznik na mapie poniżej, aby wyświetlić dane na pasku bocznym.
W sekcji poniżej znajdziesz cały kod potrzebny do utworzenia mapy i paska bocznego.
var map; var src = 'https://developers.google.com/maps/documentation/javascript/examples/kml/westcampus.kml'; function initMap() { map = new google.maps.Map(document.getElementById('map'), { center: new google.maps.LatLng(-19.257753, 146.823688), zoom: 2, mapTypeId: 'terrain' }); var kmlLayer = new google.maps.KmlLayer(src, { suppressInfoWindows: true, preserveViewport: false, map: map }); kmlLayer.addListener('click', function(event) { var content = event.featureData.infoWindowHtml; var testimonial = document.getElementById('capture'); testimonial.innerHTML = content; }); }
<div id="map"></div> <div id="capture"></div>
html, body { height: 370px; padding: 0; margin: 0; } #map { height: 360px; width: 300px; overflow: hidden; float: left; border: thin solid #333; } #capture { height: 360px; width: 480px; overflow: hidden; float: left; background-color: #ECECFB; border: thin solid #333; border-left: none; }
<!-- Replace the value of the key parameter with your own API key. --> <script async src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap"> </script>
Sprawdź to
Możesz eksperymentować z tym kodem w JSFiddle, klikając ikonę <>
w prawym górnym rogu okna kodu.
<!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> <meta charset="utf-8"> <title>KML Click Capture Sample</title> <style> html, body { height: 370px; padding: 0; margin: 0; } #map { height: 360px; width: 300px; overflow: hidden; float: left; border: thin solid #333; } #capture { height: 360px; width: 480px; overflow: hidden; float: left; background-color: #ECECFB; border: thin solid #333; border-left: none; } </style> </head> <body> <div id="map"></div> <div id="capture"></div> <script> var map; var src = 'https://developers.google.com/maps/documentation/javascript/examples/kml/westcampus.kml'; function initMap() { map = new google.maps.Map(document.getElementById('map'), { center: new google.maps.LatLng(-19.257753, 146.823688), zoom: 2, mapTypeId: 'terrain' }); var kmlLayer = new google.maps.KmlLayer(src, { suppressInfoWindows: true, preserveViewport: false, map: map }); kmlLayer.addListener('click', function(event) { var content = event.featureData.infoWindowHtml; var testimonial = document.getElementById('capture'); testimonial.innerHTML = content; }); } </script> <script async src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY &callback=initMap"> </script> </body> </html>
Pierwsze kroki
Aby utworzyć mapę i pasek boczny w tym samouczku, wykonaj te czynności:
Konfigurowanie pliku KML na potrzeby importowania
Plik KML powinien być zgodny ze standardem KML. Szczegółowe informacje o tym standardzie znajdziesz na stronie Open Geospatial Consortium. Dokumentacja KML Google zawiera opis języka oraz dokumentację odwołującą się do pojęć i dokumentację odwołującą się do koncepcji.
Jeśli dopiero się uczysz i nie masz pliku KML, możesz:
W tym samouczku użyj tego pliku KML:
https://developers.google.com/maps/documentation/javascript/examples/kml/westcampus.kml
Znajdź plik KML w internecie. Możesz użyć operatora wyszukiwania
filetype
w Google.Zastąp dowolne wyszukiwane hasło ciągiem znaków
velodromes
lub pomiń je całkowicie, aby znaleźć wszystkie pliki KML.
Jeśli tworzysz własny plik, kod w tym przykładzie zakłada, że:
- Plik jest publicznie hostowany w internecie. Jest to wymagane we wszystkich aplikacjach, które wczytują plik KML do
KMLLayer
, aby serwery Google mogły znaleźć i pobrać treści, które mają być wyświetlane na mapie. - Plik nie znajduje się na stronie chronionej hasłem.
- Twoje funkcje mają zawartość okna informacyjnego. Możesz umieścić te treści w elemencie
description
lub za pomocą elementuExtendedData
i zastąpienia elementu (więcej informacji znajdziesz poniżej). Oba są dostępne jako atrybutinfoWindowHtml
funkcji.
Elementy ExtendedData
Plik KML w tym samouczku zawiera informacje o elementach w elemencie ExtendedData
. Aby uwzględnić te informacje w opisie funkcji, użyj zastępstwa wartości, które jest w podstawie zmienną w tagu BalloonStyle
.
W tabeli poniżej znajdziesz opis kodu tej sekcji.
Kod i opis | |
---|---|
|
Plik KML zawiera 1 element Style , który jest stosowany do wszystkich znaczników miejsca. Ten element Style przypisuje elementowi tekstowemu BalloonStyle wartość #[video] .Format $[x] informuje parsownik KML, aby szukał elementu Data o nazwie video i użył go jako tekstu okienka. |
|
Każdy element Placemark zawiera element ExtendedData , który zawiera element Data .
Zwróć uwagę, że każdy element Placemark ma jeden element Data z atrybutem name o wartości video .Plik do tego samouczka używa umieszczonego filmu z YouTube jako wartości tekstu okienka każdego znacznika. |
Więcej informacji o zastępowaniu elementów znajdziesz w dokumentacji KML w rozdziale Dodawanie danych niestandardowych.
Wyświetlanie warstwy KML
Inicjowanie mapy
Ta tabela wyjaśnia kod tej sekcji.
Kod i opis | |
---|---|
|
Aby wyświetlić plik KML na mapie, musisz najpierw utworzyć mapę. Ten kod tworzy nowy obiekt Map Google, określa, gdzie ma być środek mapy i na ile ma być powiększona, a następnie dołącza mapę do div .Aby dowiedzieć się więcej o podstawach tworzenia mapy Google, przeczytaj samouczek Dodawanie mapy Google do witryny. |
Tworzenie warstwy KML
Ta tabela zawiera opis kodu, który tworzy warstwę KML.
Kod i opis | |
---|---|
|
Tworzy nowy obiekt KMLLayer, aby wyświetlić plik KML. |
|
Konstruktor KMLLayer ustawia URL pliku KML. Określa też właściwości obiektu KMLLayer, które:
|
Wyświetlanie danych na pasku bocznym
W tej sekcji opisujemy ustawienia, które wyświetlają zawartość okna informacyjnego na pasku bocznym po kliknięciu elementu na mapie. Aby to zrobić:
- Nasłuchuje zdarzenia kliknięcia w przypadku dowolnej funkcji KMLLayer.
- Pobieranie danych funkcji, na którą użytkownik kliknął.
- zapisywanie tych danych na pasku bocznym.
Dodawanie detektora zdarzeń
Mapy Google udostępniają funkcję nasłuchiwania i reagowania na zdarzenia użytkownika na mapie, takie jak kliknięcia czy naciśnięcia klawiszy. Dodaje detektor dla takich zdarzeń click
.
W tabeli poniżej znajdziesz opis kodu tej sekcji.
Kod i opis | |
---|---|
|
Detektor zdarzeń kmlLayer.addListener skupia się na:
|
Zapisywanie danych funkcji KML na pasku bocznym
Na tym etapie samouczka masz już zarejestrowane zdarzenia kliknięcia związane z funkcjami warstwy. Możesz teraz skonfigurować aplikację tak, aby zapisywała dane funkcji i treści okna z informacjami na pasku bocznym.
W tabeli poniżej znajdziesz opis kodu tej sekcji.
Kod i opis | |
---|---|
|
Zapisuje zawartość okna informacyjnego w zmiennej. |
|
Określa div , do którego ma być zapisywany kod, i zastępuje w nim kod HTML treścią funkcji.
|
|
Te wiersze kodu stają się funkcją w konstruktorze addListener .
|
Teraz za każdym razem, gdy klikniesz na mapie obiekt KML, pasek boczny zostanie zaktualizowany, aby wyświetlić zawartość okna informacji.
Więcej informacji
Dowiedz się więcej o używaniu plików KML.