Các phương pháp hay nhất về JS
Maps JavaScript API chỉ hoạt động với môi trường ECMAScript và W3C DOM tiêu chuẩn. Điều này có nghĩa là việc sửa đổi hoặc ghi đè hành vi của các lớp và đối tượng tích hợp do trình duyệt cung cấp có thể khiến Maps JavaScript API không hoạt động. Đôi khi, các thư viện khác có thể xung đột với Maps JavaScript API bằng cách thay đổi hành vi của trình duyệt để trình duyệt không còn là môi trường ECMAScript tiêu chuẩn nữa. Maps JavaScript API không tương thích với những thư viện đó.
Các thư viện được biết là không tương thích với Maps JavaScript API:
- Prototype: ghi đè
Array.from()vàElement.prototype.remove()theo những cách không chuẩn. - MooTools (các phiên bản cũ hơn): ghi đè
Array.from()theo cách không chuẩn. - DateJS (các phiên bản cũ hơn): ghi đè
Date.now()theo cách không chuẩn.
Đôi khi, bạn có thể sửa đổi các thư viện không tương thích để xoá các chế độ ghi đè không chuẩn.
Các phương pháp hay nhất về CSS
Khi bạn thêm hoặc tuỳ chỉnh bản đồ bằng Maps JavaScript API, một số kiểu mà bạn áp dụng cho trang web có thể ghi đè các kiểu bản đồ và gây ra xung đột CSS. Nếu bạn sử dụng khung CSS hoặc thành phần JavaScript để tạo kiểu, thì điều này có thể làm tăng thêm xung đột CSS với các kiểu bản đồ.
Khung CSS và các thành phần tạo kiểu JavaScript thường sử dụng chế độ đặt lại CSS hoặc bộ chuẩn hoá để xử lý sự khác biệt về kết xuất giữa các trình duyệt. Khung thường sử dụng phần tử box-sizing để điều chỉnh tỷ lệ lề và đường viền của các phần tử trên trang web. Điều này thường liên quan đến việc thay đổi hành vi mặc định của trình duyệt từ việc sử dụng content-box sang border-box.
Loại chế độ đặt lại CSS này có thể gây ra xung đột CSS với Maps JavaScript API vì API không hỗ trợ các thay đổi đối với biểu định kiểu tác nhân người dùng. Xung đột CSS bổ sung có thể xảy ra nếu khung hoặc thành phần tham chiếu đến các lớp CSS hoặc phần tử DOM của Maps JavaScript API.
Để tránh những xung đột này, bạn nên cân nhắc một số đề xuất.
Mức độ cụ thể
CSS được nhúng và liên kết sẽ được áp dụng cho bản đồ của bạn trước các kiểu của Google Maps. Nếu tất cả các kiểu trang của bạn được xác định trong CSS được nhúng hoặc liên kết, hãy tuân theo các quy tắc về mức độ cụ thể để đảm bảo rằng các kiểu chính xác được áp dụng cho bản đồ của bạn.
Các phần tử CSS phổ biến, chẳng hạn như img, button, và a có thể bị ghi đè bởi các
kiểu của trang. Một trong những trường hợp phổ biến nhất là khi thuộc tính max-width của phần tử img được đặt thành 100%. Điều này có thể khiến các thành phần bản đồ bị biến dạng
hoặc ẩn, đặc biệt là nếu bạn đang sử dụng
InfoWindow.
Để khắc phục vấn đề này, bạn có thể cập nhật phần tử img cho bản đồ để thuộc tính max-width được đặt thành none. Ví dụ:
#map img
{
max-width : none;
}
Tên lớp
Đừng tham chiếu đến tên lớp và các phần tử DOM nội bộ của JavaScript Maps API. Thao tác này không được hỗ trợ và có thể gây ra các thay đổi mang tính đột phá trên trang web của bạn mà không có thông báo. Thay vào đó, bạn nên tạo các lớp CSS riêng làm vùng chứa cho bản đồ.
Nếu khung CSS hoặc thành phần JavaScript sử dụng các loại tham chiếu này, thì đề xuất ghi đè box-sizing của chúng tôi có thể đóng vai trò là giải pháp thay thế.
Ghi đè box-sizing CSS
Các chế độ ghi đè box-sizing CSS cung cấp một giải pháp thay thế có thể cho các xung đột về kiểu bản đồ. Điều này đặc biệt hữu ích nếu bạn đang sử dụng khung CSS hoặc thành phần tạo kiểu JavaScript. Ví dụ: nếu box-sizing được đặt thành border-box, hãy thử làm như sau:
- Tạo chế độ ghi đè
box-sizingđể đặt phần tử<html>thànhborder-box. - Sử dụng
box-sizing: inheritcho tất cả các phần tử khác ngoài bản đồ của bạn. - Tạo vùng chứa bản đồ tuỳ chỉnh để đặt lại phần tử
box-sizingthànhinitial.
Ví dụ về CSS:
html {
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
.container-map {
box-sizing: initial;
}