Omówienie
Ten samouczek pokazuje, jak wyświetlać informacje z pliku KML na mapie i w bocznym panelu Map 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>
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
Oto etapy tworzenia mapy i paska bocznego w tym samouczku:
Przygotowanie pliku KML do zaimportowania
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 w przypadku wszystkich aplikacji, które wczytują plik KML do
KMLLayer
, aby serwery Google mogły znaleźć i pobrać zawartość i wyświetlić ją 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 artykule Dodawanie danych niestandardowych w dokumentacji KML.
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 wyjaśniamy, które ustawienia powodują wyświetlanie zawartości 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.