Omówienie
Geomapa to mapa kraju, kontynentu lub regionu z kolorami i wartościami przypisanymi do konkretnych regionów. Wartości są wyświetlane jako skala kolorów. Możesz też określić opcjonalny tekst wyświetlany po najechaniu kursorem dla poszczególnych regionów. Mapa jest renderowana w przeglądarce za pomocą osadzonego odtwarzacza Flash. Pamiętaj, że mapy nie można przewijać ani przeciągać, ale można ją skonfigurować tak, by umożliwić jej powiększanie.
Przykłady
Podajemy 2 przykłady: jeden wykorzystujący styl wyświetlania regionów i drugi wykorzystujący styl wyświetlania znaczników.
Przykład regionów
Styl regionów wypełnia całe regiony (zwykle kraje) kolorami odpowiadającymi przypisanym przez Ciebie wartościom. Określ styl regionów, przypisując w kodzie atrybut options['dataMode']
= 'regions'.
<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {
'packages':['geomap'],
// Note: you will need to get a mapsApiKey for your project.
// See: https://developers.google.com/chart/interactive/docs/basic_load_libs#load-settings
'mapsApiKey': 'AIzaSyD-9tSrke72PouQMnMX-a7eZSW0jkFMBWY'
});
google.charts.setOnLoadCallback(drawMap);
function drawMap() {
var data = google.visualization.arrayToDataTable([
['Country', 'Popularity'],
['Germany', 200],
['United States', 300],
['Brazil', 400],
['Canada', 500],
['France', 600],
['RU', 700]
]);
var options = {};
options['dataMode'] = 'regions';
var container = document.getElementById('regions_div');
var geomap = new google.visualization.GeoMap(container);
geomap.draw(data, options);
};
</script>
</head>
<body>
<div id="regions_div" style="width: 900px; height: 500px;"></div>
</body>
</html>
Przykład znaczników
Styl „Znaczniki” wyświetla okrąg, odpowiedni rozmiar i kolor, aby wskazać wartość w określonych przez Ciebie regionach.
<html>
<head>
<script type='text/javascript' src='https://www.gstatic.com/charts/loader.js'></script>
<script type='text/javascript'>
google.charts.load('current', {'packages': ['geomap']});
google.charts.setOnLoadCallback(drawMap);
function drawMap() {
var data = google.visualization.arrayToDataTable([
['City', 'Popularity'],
['New York', 200],
['Boston', 300],
['Miami', 400],
['Chicago', 500],
['Los Angeles', 600],
['Houston', 700]
]);
var options = {};
options['region'] = 'US';
options['colors'] = [0xFF8747, 0xFFB581, 0xc06000]; //orange colors
options['dataMode'] = 'markers';
var container = document.getElementById('map_canvas');
var geomap = new google.visualization.GeoMap(container);
geomap.draw(data, options);
};
</script>
</head>
<body>
<div id='map_canvas'></div>
</body>
</html>
Wczytuję
Nazwa pakietu google.charts.load to "geomap"
google.charts.load('current', {'packages': ['geomap']});
Nazwa klasy wizualizacji mapy geograficznej to google.visualization.GeoMap
var visualization = new google.visualization.GeoMap(container);
Format danych
Obsługiwane są 2 formaty adresów, z których każdy obsługuje inną liczbę kolumn i inne typy danych w każdej kolumnie. Wszystkie adresy w tabeli muszą używać jednego lub drugiego. Nie można mieszać typów.
- Format 1: lokalizacje szerokości/długości geograficznej. Ten format działa tylko wtedy, gdy opcja
dataModeto „markery”. Jeśli używasz tego formatu, nie musisz dodawać kodu JavaScript Map Google. Lokalizacja jest wpisana w 2 kolumnach i 2 opcjonalnych kolumnach:- [Liczba, wymagana] Szerokość geograficzna. Liczby dodatnie oznaczają północ, a ujemne – południe.
- [Liczba, wymagana] długość geograficzna. Liczby dodatnie oznaczają wschód, a ujemne – zachód.
- [Liczba, opcjonalnie] Wartość liczbowa wyświetlana, gdy użytkownik najedzie kursorem na ten region. Jeśli używana jest kolumna 4, jest ona wymagana.
- [Ciąg znaków, opcjonalny] Dodatkowy tekst ciągu wyświetlany, gdy użytkownik najedzie kursorem na ten region.
- Format 2: adres, nazwa kraju, lokalizacje w nazwach regionów lub obszary miejskie w Stanach Zjednoczonych. Ten format działa, gdy opcja
dataModema wartość „markery” lub „regiony”. Lokalizacja jest wpisana w jednej kolumnie i 2 opcjonalnych kolumnach:- [Ciąg, wymagany] lokalizacja na mapie. Akceptowane są te formaty:
- Konkretny adres (na przykład „1600 Pennsylvania Ave”).
- Nazwa kraju jako ciąg znaków (np. „Anglia”), kod ISO-3166 pisany wielkimi literami lub jego odpowiedni tekst w języku angielskim (np. „GB” lub „Polska”).
- Nazwa kodowa regionu pisana wielkimi literami w formacie ISO-3166-2 lub jego odpowiednik w języku angielskim (np. „US-NJ” lub „New Jersey”). Uwaga: regiony można określić tylko wtedy, gdy opcja dataMode jest ustawiona na „regions”.
- miejski numer kierunkowy. Są to 3-cyfrowe kody obszarów miejskich używane do wyznaczania różnych regionów. Obsługiwane są tylko kody w Stanach Zjednoczonych. Pamiętaj, że to nie to samo co telefoniczne numery kierunkowe.
- [Liczba, opcjonalnie] Wartość liczbowa wyświetlana, gdy użytkownik najedzie kursorem na ten region. Jeśli używana jest kolumna 3, jest ona wymagana.
- [Ciąg znaków, opcjonalny] Dodatkowy tekst ciągu wyświetlany, gdy użytkownik najedzie kursorem na ten region.
- [Ciąg, wymagany] lokalizacja na mapie. Akceptowane są te formaty:
Uwaga: mapa może wyświetlać maksymalnie 400 pozycji. Jeśli DataTable lub DataView zawiera więcej niż 400 wierszy, wyświetli się tylko pierwsze 400 pozycji. Najszybsze tryby to dataMode='regions' z lokalizacjami określonymi jako kody ISO i dataMode='markers' z uwzględnieniem szerokości i długości geograficznej. Najwolniejszy tryb to dataMode='markers' z adresem w postaci ciągu znaków.
Ważne: DataTable musi zawierać każdą opcjonalną kolumnę poprzedzającą dowolną kolumnę, której chcesz użyć. Jeśli na przykład chcesz podać tabelę szerokości i długości geograficznej i chcesz użyć tylko kolumn 1, 2 i 4, funkcja DataTable musi nadal definiować kolumnę 3 (chociaż nie musisz dodawać do niej żadnych wartości):
dataTable = new google.visualization.DataTable();
dataTable.addRows(1);
dataTable.addColumn('number', 'LATITUDE', 'Latitude');
dataTable.addColumn('number', 'LONGITUDE', 'Longitude');
dataTable.addColumn('number', 'VALUE', 'Value'); // Won't use this column, but still must define it.
dataTable.addColumn('string', 'HOVER', 'HoverText');
dataTable.setValue(0,0,47.00);
dataTable.setValue(0,1,-122.00);
dataTable.setValue(0,3,"Hello World!");
Opcje konfiguracji
| Nazwa | Typ | Domyślne | Opis |
|---|---|---|---|
region |
string, | „world” | Obszar do wyświetlenia na mapie. (Wyświetlą się też otoczenie). Może to być kod kraju (w formacie ISO-3166 pisany wielkimi literami) lub jeden z tych ciągów:
Geomapa nie umożliwia przewijania ani przeciągania, a jedynie ograniczone powiększanie. Podstawowe pomniejszanie można włączyć, ustawiając właściwość |
dataMode |
string, | „regiony” | Jak wyświetlać wartości na mapie. Obsługiwane są 2 wartości:
|
width |
string, | „556 piks.” | Szerokość wizualizacji. Jeśli nie podasz żadnych jednostek, domyślną jednostką będą piksele. |
height |
string, | „347 piks.” | Wysokość wizualizacji. Jeśli nie podasz żadnych jednostek, domyślną jednostką będą piksele. |
colors |
Tablica numerów RGB w formacie 0xRRGGBB | [0xE0FFD4, 0xA5EF63, 0x50AA00, 0x267114] | Gradient koloru do przypisania do wartości na wizualizacji. Musisz mieć co najmniej 2 wartości. Gradient będzie zawierał wszystkie wartości, a także obliczone wartości pośrednie, przy czym najjaśniejszy kolor ma wartość najmniejszą, a najciemniejszy – najwyższy. |
showLegend |
boolean | prawda | Jeśli ma wartość true, wyświetl legendę mapy. |
showZoomOut |
boolean | false | Jeśli ma wartość true (prawda), wyświetl przycisk z etykietą określoną przez właściwość zoomOutLabel. Pamiętaj, że kliknięcie tego przycisku nie ma nic wspólnego z wyjątkiem wywołania zdarzenia zoomOut.
Aby obsługiwać powiększanie, przechwyć to zdarzenie i zmień opcję region.
showZoomOut możesz określić tylko wtedy, gdy opcja region jest mniejsza niż widok świata. Jednym ze sposobów na włączenie powiększenia jest nasłuchiwanie zdarzenia regionClick, zmiana właściwości region na odpowiedni region i wczytanie mapy ponownie. |
zoomOutLabel |
string, | Pomniejsz | Etykieta przycisku powiększenia. |
Metody
| Metoda | Typ zwracanej wartości | Opis |
|---|---|---|
draw(data, options) |
Brak | Rysuje mapę. Można powrócić przed zakończeniem rysowania (patrz zdarzenie drawingDone()). |
getSelection() |
Tablica elementów zaznaczenia | Standardowa implementacja getSelection(). Wybrane elementy to wiersze. Ta metoda działa tylko wtedy, gdy opcja dataMode ma wartość „regiony”. Możesz wybrać tylko region z przypisaną wartością. |
setSelection(selection) |
Brak | Implementacja standardowa setSelection(). Traktuje zaznaczenie jako wybór wiersza i obsługuje wybór wielu wierszy. Można wybierać tylko regiony z przypisanymi wartościami. |
Zdarzenia
| Nazwa | Opis | Właściwości |
|---|---|---|
error |
Uruchamiane, gdy podczas próby wyrenderowania wykresu wystąpi błąd. | identyfikator, wiadomość |
select |
Uruchamiane, gdy użytkownik kliknie region z przypisaną wartością. Aby dowiedzieć się, co zostało wybrane, zadzwoń pod numer Uwaga: ze względu na pewne ograniczenia zdarzenie |
Brak |
regionClick |
Wywoływane po kliknięciu regionu. Działa zarówno w przypadku „regionów”, jak i „znaczników” Uwaga: ze względu na pewne ograniczenia zdarzenie |
Obiekt z pojedynczą właściwością (region) będącym ciągiem znaków w formacie ISO-3166 opisującym kliknięty region. |
zoomOut |
Wywoływane po kliknięciu przycisku pomniejszania. Aby obsługiwać powiększanie, przechwyć to zdarzenie i zmień opcję Uwaga: ze względu na pewne ograniczenia zdarzenie |
Brak |
drawingDone |
Wywoływane po zakończeniu rysowania mapy geograficznej. | Brak |
Zasady dotyczące danych
Lokalizacje są geokodowane przez Mapy Google. Dane, które nie wymagają geokodowania, nie są wysyłane na żaden serwer. Więcej informacji o zasadach dotyczących danych znajdziesz w Warunkach korzystania z Map Google.
Uwagi
Ze względu na ustawienia zabezpieczeń Flash ten element (podobnie jak wszystkie wizualizacje oparte na Flashu) może nie działać prawidłowo, gdy zostanie otwarty z lokalizacji pliku w przeglądarce (np. file:///c:/webhost/myhost/myviz.html), a nie z adresu URL serwera WWW (np. http://www.mojhost.com/myviz.html). Zazwyczaj jest to tylko problem testowy. Możesz rozwiązać ten problem w sposób opisany w witrynie Macromedia.