Na tej stronie znajdziesz listę znanych problemów i obejść dotyczących map wektorowych oraz funkcji WebGL.
Obsługa przeglądarek i urządzeń
Wersja zapoznawcza funkcji WebGL obsługuje te same przeglądarki i urządzenia co interfejs Maps JavaScript API. Aby sprawdzić, czy przeglądarka na danym urządzeniu obsługuje WebGL, wejdź na get.webgl.org lub caniuse.com. Upewnij się też, że w ustawieniach przeglądarki jest włączona akceleracja sprzętowa. W przeciwnym razie mapy wektorowe zostaną zastąpione rastrowymi.
Mapa rastrowa czy wektorowa?
Czasami mapa wektorowa może zostać zastąpiona rastrową. W takim przypadku funkcje zależne od mapy wektorowej są niedostępne. Zastąpienie mapy wektorowej mapą rastrową może nastąpić z różnych powodów. Z tej sekcji dowiesz się, jak prawidłowo skonfigurować przeglądarkę internetową i jak programowo sprawdzić, czy jest dostępna funkcja mapy wektorowej.
Sprawdzanie możliwości przeglądarki w Chrome
Aby sprawdzić, które funkcje akceleracji sprzętowej są włączone w konkretnej instalacji Chrome, otwórz chrome://gpu/ i upewnij się , że te elementy są włączone (na zielono):
- „OpenGL: Enabled” (OpenGL: włączony)
- „WebGL: Hardware accelerated” (WebGL: przyspieszany sprzętowo)
- „WebGL2: Hardware accelerated” (WebGL2: przyspieszany sprzętowo)
(To tylko podstawowe wymagania. Mogą występować inne czynniki, które mają wpływ na obsługę. Więcej informacji znajdziesz w sekcji „Znane błędy” poniżej).
Włączanie akceleracji sprzętowej
Aby obsługiwać mapy wektorowe, w większości przeglądarek musi być włączona akceleracja sprzętowa. Aby włączyć akcelerację sprzętową w Chrome i Microsoft Edge, otwórz Ustawienia, wybierz System i upewnij się, że opcja Użyj akceleracji sprzętowej gdy jest dostępna jest włączona.
- Dowiedz się, jak zmienić ustawienia witryn w Safari.
- Dowiedz się więcej o ustawieniach wydajności w Firefoxie.
Programowe sprawdzanie, czy mapa jest rastrowa czy wektorowa
Możesz programowo sprawdzić, czy mapa jest rastrowa czy wektorowa, wywołując funkcję map.getRenderingType(). Poniższy przykład pokazuje kod, który monitoruje zdarzenie renderingtype_changed i wyświetla okno informacyjne z informacją, czy używana jest mapa rastrowa czy mapa wektorowa.
TypeScript
/** * This example creates a map with an info window that shows whether * the map render type is raster or vector. */ function initMap() { const center = {lat: 0, lng: 0}; const map = new google.maps.Map(document.getElementById('map') as HTMLElement, { center, zoom: 10, heading: 0.0, tilt: 0.0, // Map ID for a vector map. mapId: '6ff586e93e18149f', }); const canvas = document.createElement("canvas"); const infoWindow = new google.maps.InfoWindow({ content: '', ariaLabel: 'Raster/Vector', position: center, }); infoWindow.open({ map, }); map.addListener('renderingtype_changed', () => { infoWindow.setContent(`${map.getRenderingType()}`); }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
/** * This example creates a map with an info window that shows whether * the map render type is raster or vector. */ function initMap() { const center = { lat: 0, lng: 0 }; const map = new google.maps.Map(document.getElementById("map"), { center, zoom: 10, heading: 0.0, tilt: 0.0, // Map ID for a vector map. mapId: "6ff586e93e18149f", }); const canvas = document.createElement("canvas"); const infoWindow = new google.maps.InfoWindow({ content: "", ariaLabel: "Raster/Vector", position: center, }); infoWindow.open({ map, }); map.addListener("renderingtype_changed", () => { infoWindow.setContent(`${map.getRenderingType()}`); }); } window.initMap = initMap;
Możesz też użyć kontekstu renderowania WebGL, aby sprawdzić obsługę WebGL 2:
const canvas = document.createElement("canvas");
canvas.getContext("webgl2") ? console.log("WebGL 2 is supported") : console.log("WebGL 2 is NOT supported");
Dowiedz się, jak programowo wykryć kontekst renderowania WebGL.
Obsługa internetu mobilnego
Obsługa internetu mobilnego w przypadku map wektorowych jest wciąż w fazie eksperymentalnej. Deweloperzy mogą używać interfejsów API klienta do wykrywania przeglądarek internetowych na urządzeniach mobilnych i używania identyfikatora mapy powiązanego z mapą rastrową zamiast z mapą wektorową. W przypadku niektórych urządzeń mobilnych spodziewamy się wolniejszego renderowania. Jeśli zdecydujesz się używać map wektorowych w internecie mobilnym, będziemy wdzięczni za statystyki wydajności i opinie. Jak wspomnieliśmy wyżej, jeśli obsługa map wektorowych jest niedostępna, identyfikator mapy wektorowej automatycznie przełączy się na mapę rastrową.
Błędy
Znane błędy
- W Chrome na niektórych urządzeniach z macOS z procesorami graficznymi AMD występuje znany problem. Może to być szczególnie mylące, gdy macOS dynamicznie przełącza się między procesorami graficznymi na urządzeniach z wieloma procesorami graficznymi. W zależności od tego, które aplikacje są uruchomione lub czy jest podłączony monitor zewnętrzny, mapy wektorowe mogą być niedostępne. W niektórych przypadkach włączenie nadchodzącego backendu ANGLE Metal w Chrome rozwiązuje ten problem. Ogólne plany wdrożenia znajdziesz na stronie https://bugs.chromium.org/p/chromium/issues/detail?id=1322521.
Zgłaszanie błędów
- Zanim zgłosisz błąd, zaktualizuj przeglądarkę i sterownik procesora graficznego do najnowszej wersji.
- Upewnij się, że ustawienie akceleracji sprzętowej jest włączone w
chrome://settings/system(Chrome),about:preferences#general(Firefox) lubedge://settings/system(Microsoft Edge). W Safari to ustawienie jest włączone automatycznie w systemie macOS w wersji 10.15 lub nowszej. W starszych wersjach macOS otwórz ustawienia zaawansowane Safari i upewnij się, że opcja „Użyj akceleracji sprzętowej” jest włączona. - W zgłoszeniu błędu podaj link do przykładowego kodu jsfiddle.
- Jeśli napotkasz problemy z renderowaniem, zrób też zrzut ekranu
chrome://gpu(Chrome),about:support(Firefox) lubedge://gpu(Microsoft Edge) i dołącz do zgłoszenia błędu informacje związane z procesorem graficznym.
Chcemy poznać wasze opinie
Twoja opinia jest dla nas bardzo ważna, ponieważ staramy się zapewnić Tobie i Twoim użytkownikom jak najlepsze wrażenia z korzystania z map wektorowych. Daj nam znać, jeśli:
- w aplikacjach internetowych wykryjesz nowe błędy JavaScriptu lub błędy/awarie;
- opóźnienie uruchamiania map wektorowych jest znacznie większe niż w przypadku map rastrowych. W takim przypadku bardzo przydatne są dane o regresji opóźnienia uruchamiania. Ogólnie rzecz biorąc, chcemy wiedzieć, czy opóźnienie uruchamiania przekracza dopuszczalne progi.
- korzystanie z map wektorowych nie jest tak płynne, jak mogłoby być. Jeśli rejestrujesz dane o liczbie klatek na sekundę lub o zacięciach, jak wypadają one w porównaniu z mapami wektorowymi i rastrowymi?
- wydajność znacznie się różni w zależności od przeglądarki.
Jeśli masz skonfigurowane testy A/B do porównania map wektorowych z mapami rastrowymi, udostępnij nam wszelkie informacje o wydajności, które uzyskasz, ponieważ pomogą nam one udoskonalić tę funkcję.