Przegląd
Z tego samouczka dowiesz się, jak wyświetlać informacje z pliku KML na mapie Google i na pasku bocznym. 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>
Wypróbuj
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
W tym samouczku utworzymy mapę i pasek boczny w tych etapach:
Przygotowywanie pliku KML do importu
Plik KML powinien być zgodny ze standardem KML. Szczegółowe informacje o tym standardzie znajdziesz w witrynie Open Geospatial Consortium. Dokumentacja KML Google opisuje też język i zawiera dokumentację dla deweloperów, zarówno referencyjną, jak i koncepcyjną.
Jeśli dopiero zaczynasz i nie masz pliku KML, możesz:
Na potrzeby tego samouczka 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
.Zastąp dowolnym wyszukiwanym hasłem symbol
velodromes
lub całkowicie pomiń to hasło, 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 w przypadku wszystkich aplikacji, które wczytują KML do
KMLLayer
, aby serwery Google mogły znaleźć i pobrać treść do wyświetlenia na mapie. - Plik nie znajduje się na stronie chronionej hasłem.
- Obiekty mają zawartość okna informacyjnego. Możesz umieścić te treści w elemencie
description
lub dodać je za pomocą elementuExtendedData
i zastępowania encji (więcej informacji znajdziesz poniżej). Oba są dostępne jako właściwośćinfoWindowHtml
funkcji.
Elementy ExtendedData
Plik KML w tym samouczku zawiera informacje o obiekcie w elemencie
ExtendedData
. Aby przenieść te informacje do opisu funkcji, użyj zastępowania encji, czyli zmiennej w tagu BalloonStyle
.
W tabeli poniżej znajdziesz wyjaśnienie kodu w tej sekcji.
Kod i opis | |
---|---|
|
Plik KML zawiera jeden element Style , który jest stosowany do wszystkich
znaczników miejsca. Ten element Style przypisuje wartość #[video] do elementu tekstowego BalloonStyle .Format $[x] informuje parser KML, że ma szukać elementu Data o nazwie video i użyć go jako tekstu dymku. |
|
Każdy element Placemark zawiera element ExtendedData , który zawiera element Data .
Zwróć uwagę, że każdy element Placemark zawiera pojedynczy element Data z atrybutem name o wartości video .Plik użyty w tym samouczku zawiera osadzony film z YouTube jako wartość tekstu dymku każdego znacznika miejsca. |
Więcej informacji o zastępowaniu jednostek znajdziesz w rozdziale Dodawanie danych niestandardowych w dokumentacji KML.
Wyświetlanie warstwy KMLLayer
Inicjowanie mapy
W tej tabeli znajdziesz wyjaśnienie kodu tej sekcji.
Kod i opis | |
---|---|
|
Aby wyświetlić plik KML na mapie, musisz najpierw utworzyć mapę. Ten kod tworzy nowy obiekt Mapy Google, określa jego środek i poziom powiększenia oraz dołącza mapę do elementu div .Aby dowiedzieć się więcej o podstawach tworzenia mapy Google, przeczytaj samouczek Dodawanie mapy Google do witryny. |
Tworzenie warstwy KMLLayer
W tej tabeli znajdziesz wyjaśnienie kodu, który tworzy warstwę KMLLayer.
Kod i opis | |
---|---|
|
Tworzy nowy obiekt KMLLayer do wyświetlania pliku KML. |
|
Konstruktor KMLLayer ustawia adres 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łuchiwanie zdarzenia kliknięcia w przypadku dowolnego elementu KMLLayer.
- Pobieranie danych klikniętej funkcji.
- zapisywanie tych danych na pasku bocznym.
Dodawanie detektora zdarzeń
Mapy Google udostępniają funkcję nasłuchiwania zdarzeń użytkownika na mapie i reagowania na nie, takich jak kliknięcia czy naciśnięcia klawiszy klawiatury. Dodaje detektor takich zdarzeń click
.
W tabeli poniżej znajdziesz wyjaśnienie kodu w tej sekcji.
Kod i opis | |
---|---|
|
Detektor zdarzeń kmlLayer.addListener skupia się na tych elementach:
|
Zapisywanie danych elementu KML na pasku bocznym
Na tym etapie samouczka masz już zarejestrowane zdarzenia kliknięcia elementów warstwy. Możesz teraz skonfigurować aplikację tak, aby zapisywała dane funkcji i zawartość okna informacyjnego na pasku bocznym.
W tabeli poniżej znajdziesz wyjaśnienie kodu w tej sekcji.
Kod i opis | |
---|---|
|
Zapisuje treść okna informacyjnego w zmiennej. |
|
Określa div , do którego ma zostać zapisana treść, 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 obiekt KML na mapie, pasek boczny zaktualizuje się, aby wyświetlić zawartość okna informacyjnego.
Więcej informacji
Dowiedz się więcej o korzystaniu z plików KML.