Hình ảnh: Bản đồ địa lý

Tổng quan

Bản đồ địa lý là một bản đồ của một quốc gia, châu lục hoặc bản đồ khu vực, có màu sắc và giá trị được chỉ định cho các khu vực cụ thể. Các giá trị được thể hiện dưới dạng thang màu và bạn có thể chỉ định văn bản di chuột tuỳ chọn cho các khu vực. Bản đồ sẽ được kết xuất trong trình duyệt bằng cách sử dụng trình phát Flash được nhúng. Lưu ý rằng bản đồ không thể cuộn hoặc kéo, nhưng có thể được định cấu hình để cho phép thu phóng.

Ví dụ

Chúng tôi có hai ví dụ ở đây: một ví dụ về kiểu hiển thị của khu vực và ví dụ khác sử dụng kiểu hiển thị điểm đánh dấu.

Ví dụ về khu vực

Kiểu khu vực lấp đầy toàn bộ các khu vực (thường là các quốc gia) bằng màu sắc tương ứng với các giá trị mà bạn chỉ định. Chỉ định kiểu khu vực bằng cách gán options['dataMode'] = 'regions' trong mã của bạn.

<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>

Ví dụ về điểm đánh dấu

Kiểu "điểm đánh dấu" hiển thị một vòng tròn có kích thước và màu sắc để thể hiện giá trị trên các khu vực mà bạn chỉ định.

<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>

Đang tải

Tên gói google.charts.load"geomap"

  google.charts.load('current', {'packages': ['geomap']});

Tên lớp của hình ảnh bản đồ địa lý là google.visualization.GeoMap

  var visualization = new google.visualization.GeoMap(container);

Định dạng dữ liệu

Google hỗ trợ hai định dạng địa chỉ, mỗi định dạng hỗ trợ một số lượng cột khác nhau và loại dữ liệu khác nhau cho từng cột. Tất cả địa chỉ trong bảng phải sử dụng một trong hai loại; bạn không thể kết hợp các loại.

  • Định dạng 1: Vị trí Vĩ độ/Kinh độ. Định dạng này chỉ hoạt động khi tuỳ chọn dataMode là "điểm đánh dấu". Nếu định dạng này được sử dụng, bạn không cần phải bao gồm JavaScript Google Map. Bạn có thể nhập vị trí này vào 2 cột, cùng với 2 cột không bắt buộc:
    1. [Số, Bắt buộc] Vĩ độ. Số dương là số bắc, số âm ở phía nam.
    2. [Số, Bắt buộc] Kinh độ. Số dương là hướng đông, số âm là hướng tây.
    3. [Số, không bắt buộc] Một giá trị số được hiển thị khi người dùng di chuột qua vùng này. Nếu sử dụng cột 4, bạn bắt buộc phải sử dụng cột này.
    4. [Chuỗi, Không bắt buộc] Văn bản chuỗi bổ sung được hiển thị khi người dùng di chuột qua vùng này.
  • Định dạng 2: Địa chỉ, tên quốc gia, vị trí tên khu vực hoặc mã vùng đô thị của Hoa Kỳ. Định dạng này dùng được với tùy chọn dataMode được đặt thành "điểm đánh dấu" hoặc "khu vực". Bạn có thể nhập vị trí này vào 1 cột, và hai cột không bắt buộc:
    1. [Chuỗi, bắt buộc] Vị trí trên bản đồ. Chúng tôi chấp nhận những định dạng sau:
      • Một địa chỉ cụ thể (ví dụ: "1600 Pennsylvania Ave").
      • Tên quốc gia dưới dạng chuỗi (ví dụ: "Anh") hoặc mã ISO-3166 viết hoa hoặc văn bản tiếng Anh tương đương (ví dụ: "GB" hoặc "Vương quốc Anh").
      • Tên mã vùng ISO-3166-2 viết hoa hoặc tương đương văn bản tiếng Anh (ví dụ: "US-NJ" hoặc "New Jersey"). Lưu ý: Bạn chỉ có thể chỉ định khu vực khi tuỳ chọn dataMode được đặt thành "khu vực".
      • Một mã vùng đô thị. Đây là các mã thành phố gồm 3 chữ số được dùng để chỉ định nhiều khu vực; các mã Hoa Kỳ chỉ được hỗ trợ. Xin lưu ý rằng các mã này không phải giống với mã vùng của điện thoại.
    2. [Số, không bắt buộc] Một giá trị số được hiển thị khi người dùng di chuột qua vùng này. Nếu sử dụng cột 3, bạn bắt buộc phải sử dụng cột này.
    3. [Chuỗi, Không bắt buộc] Văn bản chuỗi bổ sung được hiển thị khi người dùng di chuột qua vùng này.

Lưu ý: Một bản đồ có thể hiển thị tối đa 400 mục; nếu DataTable hoặc DataView của bạn chứa hơn 400 hàng, thì chỉ 400 hàng đầu tiên sẽ hiển thị. Các chế độ nhanh nhất là dataMode='regions' với các vị trí được chỉ định là mã ISO và dataMode='markers' với vị trí vĩ độ/kinh độ. Chế độ chậm nhất là dataMode='markers' với địa chỉ chuỗi.

Quan trọng: DataTable phải bao gồm mọi cột không bắt buộc trước bất kỳ cột nào mà bạn muốn sử dụng. Ví dụ: nếu bạn muốn chỉ định một bảng vĩ độ/kinh độ và chỉ muốn sử dụng cột 1, 2 và 4, thì DataTable vẫn phải xác định cột 3 (mặc dù bạn không cần thêm giá trị nào vào bảng đó):

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!");

Các tuỳ chọn cấu hình

Tên Loại Mặc định Mô tả
region chuỗi "thế giới"

Khu vực để hiển thị trên bản đồ. (Những khu vực xung quanh cũng sẽ hiển thị.) Có thể là mã quốc gia (ở định dạng ISO-3166 viết hoa) hoặc một trong các chuỗi sau:

  • world - (Toàn thế giới)
  • us_metro - (Hoa Kỳ, các khu vực thành phố lớn)
  • 005 – (Nam Mỹ)
  • 013 – (Trung Mỹ)
  • 021 – (Bắc Mỹ)
  • 002 - (Toàn Châu Phi)
  • 017 – (Trung Phi)
  • 015 - (Bắc Phi)
  • 018 – (Nam Phi)
  • 030 - (Đông Á)
  • 034 – (Nam Á)
  • 035 – (Khu vực Châu Á/Thái Bình Dương)
  • 009 – (Châu Đại Dương)
  • 145 – (Trung Đông)
  • 143 – (Trung Á)
  • 151 – (Bắc Á)
  • 154 – (Bắc Âu)
  • 155 – (Tây Âu)
  • 039 – (Nam Âu)

Geomap không cho phép hành vi cuộn hoặc kéo mà chỉ hạn chế hành vi thu phóng. Bạn có thể bật tính năng thu nhỏ cơ bản bằng cách đặt thuộc tính showZoomOut.

dataMode chuỗi "khu vực"

Cách hiển thị các giá trị trên bản đồ. Có hai giá trị được hỗ trợ:

  • regions – Tô màu toàn bộ khu vực bằng màu thích hợp. Bạn không thể sử dụng tùy chọn này cho địa chỉ vĩ độ/kinh độ. Xem Ví dụ về khu vực.
  • markers – Hiển thị một dấu chấm trên một khu vực, với màu sắc và kích thước thể hiện giá trị. Xem Ví dụ về Markers.
width chuỗi '556 px' Chiều rộng hình ảnh trực quan. Nếu không có đơn vị nào được đưa ra, đơn vị mặc định sẽ là pixel.
height chuỗi "347px" Chiều cao của hình ảnh trực quan. Nếu không có đơn vị nào được đưa ra, đơn vị mặc định sẽ là pixel.
colors Mảng của các số RGB ở định dạng 0xRRGGBB [0xE0FFD4, 0xA5EF63, 0x50AA00, 0x267114] Độ dốc màu để gán cho các giá trị trong hình ảnh trực quan. Bạn phải có ít nhất hai giá trị; độ dốc sẽ bao gồm tất cả giá trị của bạn, cộng với giá trị trung gian đã tính toán, với màu sáng nhất là giá trị nhỏ nhất và màu tối nhất là màu cao nhất.
showLegend boolean đúng Nếu đúng, hãy hiển thị một chú giải cho bản đồ.
showZoomOut boolean sai Nếu giá trị là true, hãy hiện một nút có nhãn do thuộc tính zoomOutLabel chỉ định. Lưu ý rằng nút này không thực hiện bất kỳ hành động nào khi được nhấp vào, ngoại trừ việc gửi sự kiện zoomOut. Để xử lý thao tác thu phóng, hãy thu thập sự kiện này và thay đổi tùy chọn region. Bạn chỉ có thể chỉ định showZoomOut nếu tuỳ chọn region nhỏ hơn chế độ xem thế giới. Một cách để bật tính năng thu phóng sẽ là theo dõi sự kiện regionClick, thay đổi thuộc tính region thành khu vực thích hợp và tải lại bản đồ.
zoomOutLabel chuỗi "Thu nhỏ" Nhãn cho nút thu phóng.

Phương thức

Phương thức Loại dữ liệu trả về Mô tả
draw(data, options) Không Vẽ bản đồ. Có thể quay lại trước khi vẽ xong (xem sự kiện drawingDone()).
getSelection() Dãy các phần tử lựa chọn Triển khai getSelection() chuẩn. Các phần tử đã chọn là hàng. Phương thức này chỉ hoạt động khi tuỳ chọn dataMode là "khu vực". Bạn chỉ có thể chọn một khu vực có giá trị được chỉ định.
setSelection(selection) Không Triển khai setSelection() chuẩn. Coi một lựa chọn là lựa chọn hàng và hỗ trợ nhiều lựa chọn hàng. Bạn chỉ có thể chọn những khu vực có giá trị được chỉ định.

Sự kiện

Tên Mô tả Thuộc tính
error Được kích hoạt khi xảy ra lỗi khi cố gắng hiển thị biểu đồ. mã nhận dạng, tin nhắn
select

Được kích hoạt khi người dùng nhấp vào một khu vực có giá trị được chỉ định. Để tìm hiểu những gì đã được chọn, hãy gọi getSelection(). Chỉ có khi bạn đặt tuỳ chọn dataMode thành "khu vực".

Lưu ý: Vì có một số giới hạn nhất định, nên sự kiện select sẽ không được gửi nếu bạn truy cập trang trong trình duyệt dưới dạng tệp (ví dụ: "file://") thay vì từ máy chủ (ví dụ: "http://www").

Không
regionClick

Được gọi khi một khu vực được nhấp vào. Hoạt động cho cả "khu vực" và "điểm đánh dấu" dataMode. Tuy nhiên, ở chế độ đánh dấu, quốc gia này sẽ không được gửi cho quốc gia cụ thể được chỉ định trong tuỳ chọn "khu vực" (nếu có một quốc gia cụ thể).

Lưu ý: Vì có một số giới hạn nhất định, nên sự kiện regionClick sẽ không được gửi nếu bạn đang truy cập trang trong trình duyệt dưới dạng tệp (ví dụ: "file://") thay vì từ máy chủ (ví dụ: "http://www").

Đối tượng có một thuộc tính duy nhất là region, là một chuỗi ở định dạng ISO-3166 mô tả khu vực được nhấp vào.
zoomOut

Được gọi khi người dùng nhấp vào nút thu nhỏ. Để xử lý thao tác thu phóng, hãy thu thập sự kiện này và thay đổi tùy chọn region.

Lưu ý: Vì có một số giới hạn nhất định, nên sự kiện zoomOut sẽ không được gửi nếu bạn truy cập trang trong trình duyệt dưới dạng tệp (ví dụ: "file://") thay vì từ máy chủ (ví dụ: "http://www").

Không
drawingDone Được gọi khi bản đồ địa lý hoàn tất thao tác vẽ. Không

Chính sách dữ liệu

Vị trí được Google Maps mã hóa địa lý. Mọi dữ liệu không yêu cầu mã hoá địa lý sẽ không được gửi đến bất kỳ máy chủ nào. Vui lòng xem Điều khoản dịch vụ của Google Maps để biết thêm thông tin về chính sách dữ liệu của họ.

Lưu ý

Do các chế độ cài đặt bảo mật Flash, nội dung này (và mọi hình ảnh trực quan dựa trên Flash) có thể không hoạt động chính xác khi được truy cập từ một vị trí tệp trong trình duyệt (ví dụ: file:///c:/webhost/myhost/myviz.html) thay vì từ một URL máy chủ web (ví dụ: http://www.myhost.com/myviz.html). Đây thường chỉ là vấn đề về việc kiểm thử. Bạn có thể khắc phục vấn đề này như được mô tả trên trang web của Macromedia.