Nâng cấp ứng dụng Maps JavaScript API từ phiên bản 2 lên phiên bản 3

Kể từ ngày 26 tháng 5 năm 2021, Maps JavaScript API phiên bản 2 sẽ không còn hoạt động nữa. Do đó, bản đồ v2 của trang web sẽ ngừng hoạt động và trả về lỗi JavaScript. Để tiếp tục sử dụng bản đồ trên trang web, hãy di chuyển sang Maps JavaScript API phiên bản 3. Hướng dẫn này sẽ giúp bạn thực hiện quy trình này.

Tổng quan

Mỗi ứng dụng sẽ có quy trình di chuyển hơi khác nhau; tuy nhiên, có một số bước chung cho tất cả dự án:

  1. Mua khoá mới. API JavaScript của Maps hiện sử dụng Google Cloud Console để quản lý khoá. Nếu bạn vẫn đang sử dụng khoá phiên bản 2, hãy nhớ lấy khoá API mới trước khi bắt đầu di chuyển.
  2. Cập nhật Bootstrap API. Hầu hết ứng dụng sẽ tải Maps JavaScript API phiên bản 3 bằng mã sau:
    <script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
  3. Cập nhật mã của bạn. Mức độ thay đổi cần thiết sẽ phụ thuộc nhiều vào ứng dụng của bạn. Sau đây là một số thay đổi phổ biến:
    • Luôn tham chiếu không gian tên google.maps. Trong phiên bản 3, tất cả mã API Maps JavaScript được lưu trữ trong không gian tên google.maps.* thay vì không gian tên toàn cục. Hầu hết các đối tượng cũng đã được đổi tên trong quá trình này. Ví dụ: thay vì GMap2, giờ đây bạn sẽ tải google.maps.Map.
    • Xoá mọi nội dung tham chiếu đến các phương thức lỗi thời. Một số phương thức tiện ích dùng cho nhiều mục đích đã bị xoá, chẳng hạn như GDownloadURLGLog. Hãy thay thế chức năng này bằng thư viện tiện ích của bên thứ ba hoặc xoá các tệp tham chiếu này khỏi mã của bạn.
    • (Không bắt buộc) Thêm thư viện vào mã. Nhiều tính năng đã được chuyển sang thư viện tiện ích để mỗi ứng dụng chỉ phải tải các phần của API sẽ được sử dụng.
    • (Không bắt buộc) Định cấu hình dự án để sử dụng các thành phần bên ngoài v3. Bạn có thể sử dụng các thành phần bên ngoài v3 để xác thực mã bằng Trình biên dịch Closure hoặc để kích hoạt tính năng tự động hoàn thành trong IDE. Tìm hiểu thêm về Tính năng biên dịch nâng cao và Extern.
  4. Kiểm thử và lặp lại. Tại thời điểm này, bạn vẫn còn một số việc cần làm, nhưng tin vui là bạn sẽ sớm hoàn thành ứng dụng bản đồ v3 mới!

Các thay đổi trong phiên bản 3 của API Maps JavaScript

Trước khi lên kế hoạch di chuyển, bạn nên dành thời gian tìm hiểu sự khác biệt giữa Maps JavaScript API phiên bản 2 và Maps JavaScript API phiên bản 3. Phiên bản mới nhất của API JavaScript của Maps được viết lại từ đầu, tập trung vào các kỹ thuật lập trình JavaScript hiện đại, tăng cường sử dụng thư viện và API đơn giản. Nhiều tính năng mới đã được thêm vào API và một số tính năng quen thuộc đã được thay đổi hoặc thậm chí bị xoá. Phần này nêu bật một số điểm khác biệt chính giữa hai bản phát hành.

Một số thay đổi trong API phiên bản 3 bao gồm:

  • Thư viện lõi được tinh giản. Nhiều hàm bổ sung đã được chuyển vào thư viện, giúp giảm thời gian tải và phân tích cú pháp cho API Core, cho phép bản đồ của bạn tải nhanh trên mọi thiết bị.
  • Cải thiện hiệu suất của một số tính năng, chẳng hạn như kết xuất đa giác và đặt điểm đánh dấu.
  • Một phương pháp mới để giới hạn mức sử dụng phía máy khách nhằm hỗ trợ tốt hơn các địa chỉ dùng chung mà proxy di động và tường lửa của công ty sử dụng.
  • Thêm tính năng hỗ trợ cho một số trình duyệt hiện đại và trình duyệt di động. Tính năng hỗ trợ Internet Explorer 6 đã bị xoá.
  • Xoá nhiều lớp trợ giúp dùng cho nhiều mục đích ( GLog hoặc GDownloadUrl). Ngày nay, có nhiều thư viện JavaScript tuyệt vời cung cấp chức năng tương tự, chẳng hạn như Closure hoặc jQuery.
  • Cách triển khai Chế độ xem đường phố bằng HTML5 sẽ tải trên mọi thiết bị di động.
  • Ảnh toàn cảnh Chế độ xem đường phố tuỳ chỉnh bằng ảnh của riêng bạn, cho phép bạn chia sẻ ảnh toàn cảnh về đường trượt tuyết, nhà cần bán hoặc các địa điểm thú vị khác.
  • Các tuỳ chỉnh Bản đồ có kiểu cho phép bạn thay đổi cách hiển thị các phần tử trên bản đồ cơ sở cho phù hợp với phong cách hình ảnh riêng của mình.
  • Hỗ trợ một số dịch vụ mới, chẳng hạn như ElevationServiceDistance Matrix.
  • Dịch vụ chỉ đường cải tiến cung cấp các tuyến đường thay thế, tính năng tối ưu hoá tuyến đường (giải pháp gần đúng cho vấn đề của người bán hàng đi lại), chỉ đường đi xe đạp (có lớp đi xe đạp), chỉ đường bằng phương tiện công cộng và chỉ đường có thể kéo.
  • Định dạng Địa chỉ được mã hoá đã cập nhật cung cấp thông tin loại chính xác hơn so với giá trị accuracy từ API Địa chỉ được mã hoá phiên bản 2.
  • Hỗ trợ nhiều Cửa sổ thông tin trên một Bản đồ

Nâng cấp ứng dụng

Khoá mới của bạn

Maps JavaScript API phiên bản 3 sử dụng hệ thống khoá mới từ phiên bản 2. Có thể bạn đã sử dụng khoá v3 với ứng dụng của mình. Trong trường hợp đó, bạn không cần thay đổi gì. Để xác minh, hãy kiểm tra URL mà bạn tải API JavaScript của Maps để biết tham số key. Nếu giá trị khoá bắt đầu bằng "ABQIAA", thì bạn đang sử dụng khoá v2. Nếu có khoá phiên bản 2, bạn phải nâng cấp lên khoá phiên bản 3 trong quá trình di chuyển. Khoá phiên bản 3 sẽ:

Khoá này được truyền khi tải API JavaScript của Maps phiên bản 3. Tìm hiểu thêm về cách tạo khoá API.

Xin lưu ý rằng nếu là khách hàng của API Google Maps cho doanh nghiệp, bạn có thể đang sử dụng mã ứng dụng với thông số client thay vì thông số key. Mã ứng dụng vẫn được hỗ trợ trong Maps JavaScript API phiên bản 3 và không cần phải trải qua quy trình nâng cấp khoá.

Tải API

Nội dung sửa đổi đầu tiên mà bạn cần thực hiện đối với mã liên quan đến cách tải API. Trong phiên bản 2, bạn tải API Maps JavaScript thông qua một yêu cầu đến http://maps.google.com/maps. Nếu đang tải Maps JavaScript API phiên bản 3, bạn cần thực hiện các thay đổi sau:

  1. Tải API từ //maps.googleapis.com/maps/api/js
  2. Xoá tham số file.
  3. Cập nhật thông số key bằng khoá v3 mới. Khách hàng sử dụng API Google Maps cho doanh nghiệp nên sử dụng thông số client.
  4. (Chỉ dành cho gói Google Maps Platform Premium) Đảm bảo rằng bạn cung cấp tham số client như đã giải thích trong Hướng dẫn dành cho nhà phát triển về gói Google Maps Platform Premium.
  5. Xoá tham số v để yêu cầu phiên bản phát hành mới nhất hoặc thay đổi giá trị của tham số đó cho phù hợp với lược đồ phiên bản v3.
  6. (Không bắt buộc) Thay thế tham số hl bằng language và giữ nguyên giá trị của tham số đó.
  7. (Không bắt buộc) Thêm tham số libraries để tải các thư viện không bắt buộc.

Trong trường hợp đơn giản nhất, trình khởi động v3 sẽ chỉ chỉ định tham số khoá API:

<script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>

Ví dụ bên dưới yêu cầu phiên bản mới nhất của Maps JavaScript API v2 bằng tiếng Đức:

<script src="//maps.google.com/maps?file=api&v=2.x&key=YOUR_API_KEY&hl=de"></script>

Ví dụ bên dưới là một yêu cầu tương đương cho phiên bản 3.

<script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&language=de"></script>

Giới thiệu không gian tên google.maps

Có lẽ thay đổi đáng chú ý nhất trong Maps JavaScript API phiên bản 3 là việc giới thiệu không gian tên google.maps. Theo mặc định, API v2 đặt tất cả các đối tượng trong Không gian tên toàn cầu, điều này có thể dẫn đến xung đột tên. Trong phiên bản 3, tất cả đối tượng đều nằm trong không gian tên google.maps.

Khi di chuyển ứng dụng sang phiên bản 3, bạn sẽ phải thay đổi mã để sử dụng không gian tên mới. Rất tiếc, việc tìm kiếm "G" và thay thế bằng "google.maps" sẽ không hoàn toàn hiệu quả; nhưng đây là một nguyên tắc hay để áp dụng khi xem xét mã của bạn. Dưới đây là một số ví dụ về các lớp tương đương trong phiên bản 2 và 3.

phiên bản 2 v3
GMap2 google.maps.Map
GLatLng google.maps.LatLng
GInfoWindow google.maps.InfoWindow
GMapOptions google.map.MapOptions
G_API_VERSION google.maps.version
GPolyStyleOptions google.maps.PolygonOptions
or google.maps.PolylineOptions

Xoá mã lỗi thời

Maps JavaScript API phiên bản 3 có các tính năng tương tự như hầu hết các tính năng trong phiên bản 2; tuy nhiên, có một số lớp không còn được hỗ trợ. Trong quá trình di chuyển, bạn nên thay thế các lớp này bằng thư viện tiện ích của bên thứ ba hoặc xoá các tệp tham chiếu này khỏi mã. Có nhiều thư viện JavaScript tuyệt vời cung cấp chức năng tương tự, chẳng hạn như Closure hoặc jQuery.

Các lớp sau đây không có lớp tương đương trong API JavaScript của Maps phiên bản 3:

GBoundsGLanguage
GBrowserIsCompatibleGLayer
GControlGLog
GControlAnchorGMercatorProjection
GControlImplGNavLabelControl
GControlPositionGObliqueMercator
GCopyrightGOverlay
GCopyrightCollectionGPhotoSpec
GDownloadUrlGPolyEditingOptions
GDraggableObjectGScreenOverlay
GDraggableObjectOptionsGStreetviewFeatures
GFactualGeocodeCacheGStreetviewLocation
GGeoAddressAccuracyGStreetviewOverlay
GGeocodeCacheGStreetviewUserPhotosOptions
GGoogleBarGTileLayerOptions
GGoogleBarAdsOptionsGTileLayerOverlayOptions
GGoogleBarLinkTargetGTrafficOverlayOptions
GGoogleBarListingTypesGUnload
GGoogleBarOptionsGXml
GGoogleBarResultListGXmlHttp
GInfoWindowTabGXslt
GKeyboardHandler

So sánh mã

Hãy so sánh hai ứng dụng khá đơn giản được viết bằng API v2 và v3.

<!DOCTYPE html>
<html>
  <head>
    <script src="//maps.google.com/maps?file=api&v=2&key=YOUR_API_KEY"></script>
    <style>
      html, body, #map { height: 100%; margin: 0; }
    </style>
    <script>
    function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(
            document.getElementById('map'));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        map.setUIToDefault();

        map.addOverlay(new GMarker(new GLatLng(37.4419, -122.1419)));

      }
    }
    </script>
  </head>
  <body onload="initialize()" onunload="GUnload()">
    <div id="map"></div>
  </body>
</html>
    
<!DOCTYPE html>
<html>
  <head>
    <script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
    <style>
      html, body, #map { height: 100%; margin: 0; }
    </style>
    <script>
    function initialize() {
      var map = new google.maps.Map(
        document.getElementById('map'), {
          center: new google.maps.LatLng(37.4419, -122.1419),
          zoom: 13,
          mapTypeId: google.maps.MapTypeId.ROADMAP
      });

      var marker = new google.maps.Marker({
            position: new google.maps.LatLng(37.4419, -122.1419),
            map: map
      });

    }
    google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id="map"></div>
  </body>
</html>
    

Như bạn có thể thấy, có một số điểm khác biệt giữa hai ứng dụng này. Sau đây là những thay đổi đáng chú ý:

  • Địa chỉ tải API đã thay đổi.
  • Các phương thức GBrowserIsCompatible()GUnload() không còn bắt buộc trong phiên bản 3 và đã bị xoá khỏi API.
  • Đối tượng GMap2 được thay thế bằng google.maps.Map làm đối tượng trung tâm trong API.
  • Các thuộc tính hiện được tải thông qua các lớp Tuỳ chọn. Trong ví dụ trên, chúng ta đặt ba thuộc tính cần thiết để tải bản đồ – center, zoommapTypeId – thông qua đối tượng MapOptions nội tuyến.
  • Giao diện người dùng mặc định được bật theo mặc định trong phiên bản 3. Bạn có thể tắt tính năng này bằng cách đặt thuộc tính disableDefaultUI thành true trong đối tượng MapOptions.

Tóm tắt

Đến đây, bạn đã nắm được một số điểm chính liên quan đến việc di chuyển từ phiên bản 2 sang phiên bản 3 của API Maps JavaScript. Có thể bạn cần biết thêm thông tin, nhưng điều này sẽ tuỳ thuộc vào ứng dụng của bạn. Trong các phần sau, chúng tôi đã đưa ra hướng dẫn di chuyển cho các trường hợp cụ thể mà bạn có thể gặp phải. Ngoài ra, bạn có thể tham khảo một số tài nguyên có thể hữu ích trong quá trình nâng cấp.

Nếu bạn gặp vấn đề hoặc có câu hỏi về bài viết này, vui lòng sử dụng đường liên kết GỬI PHẢN HỒI ở đầu trang.

Tài liệu tham khảo chi tiết

Phần này cung cấp thông tin so sánh chi tiết về các tính năng phổ biến nhất cho cả phiên bản 2 và 3 của API Maps JavaScript. Mỗi phần của tài liệu tham khảo được thiết kế để đọc riêng lẻ. Bạn không nên đọc toàn bộ tài liệu tham khảo này; thay vào đó, hãy sử dụng tài liệu này để hỗ trợ quá trình di chuyển theo từng trường hợp.

  • Sự kiện – đăng ký và xử lý sự kiện.
  • Chế độ điều khiển – thao tác với các chế độ điều khiển di chuyển xuất hiện trên bản đồ.
  • Lớp phủ – thêm và chỉnh sửa đối tượng trên bản đồ.
  • Loại bản đồ – các ô tạo nên bản đồ cơ sở.
  • Lớp – thêm và chỉnh sửa nội dung dưới dạng một nhóm, chẳng hạn như lớp KML hoặc Lớp lưu lượng truy cập.
  • Dịch vụ – hoạt động với dịch vụ đường phố, chỉ đường hoặc dịch vụ lập bản đồ địa lý của Google.

Sự kiện

Mô hình sự kiện cho Maps JavaScript API phiên bản 3 tương tự như mô hình được sử dụng trong phiên bản 2, mặc dù có nhiều thay đổi về cơ bản.

Các chế độ kiểm soát

API JavaScript của Maps hiển thị các chế độ điều khiển giao diện người dùng cho phép người dùng tương tác với bản đồ của bạn. Bạn có thể sử dụng API để tuỳ chỉnh cách các chế độ điều khiển này xuất hiện.

Lớp phủ

Lớp phủ phản ánh các đối tượng mà bạn "thêm" vào bản đồ để chỉ định các điểm, đường kẻ, khu vực hoặc tập hợp các đối tượng.

Loại bản đồ

Các loại bản đồ có trong phiên bản 2 và 3 có đôi chút khác biệt, nhưng tất cả các loại bản đồ cơ bản đều có trong cả hai phiên bản API. Theo mặc định, phiên bản 2 sử dụng các ô bản đồ đường "vẽ" tiêu chuẩn. Tuy nhiên, phiên bản 3 yêu cầu bạn phải cung cấp một loại bản đồ cụ thể khi tạo đối tượng google.maps.Map.

Lớp

Lớp là các đối tượng trên bản đồ, bao gồm một hoặc nhiều lớp phủ. Bạn có thể thao tác các đối tượng này dưới dạng một đơn vị và thường phản ánh các tập hợp đối tượng.

Dịch vụ