Простой пример API Карт Google, не работающий с Ускоренными мобильными страницами (AMP)

Я пытаюсь реализовать этот простой пример "Hello World" с помощью технологии "Ускоренные мобильные страницы" (AMP).

<!DOCTYPE html>
<html>
  <head>
    <title>Simple Map</title>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <style>
      #map {height: 100%;}
      html, body {height: 100%;margin: 0; padding: 0;}
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      var map;
      function initMap() {map = new google.maps.Map(document.getElementById('map'), {center: {lat: -34.397, lng: 150.644},zoom: 8});}
    </script>
    <script src="https://maps.googleapis.com/maps/api/js?key=foo&callback=initMap" async defer></script>
  </body>
</html>

Это работает нормально, но если я вставлю библиотеки AMP в качестве второго потомка тега

<script async src="https://cdn.ampproject.org/v0.js"></script>

это перестает работать.

Что я делаю неправильно?

2 ответа

Ну, похоже, что только amp-iframe это единственный возможный способ встроить карту в страницу, поддерживаемую AMP.

Вот пример того, как использовать amp-iframe для встраивания карты.

<amp-iframe width=300 height=300
    sandbox="allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox"
    layout="responsive"
    frameborder="0"
    src="https://www.google.com/maps/embed/v1/place?key=AIzaSyDG9YXIhKBhqclZizcSzJ0ROiE0qgVfwzI&q=Alameda,%20CA">
</amp-iframe>
  1. Вы пропустили HTML-тэг amp <html amp lang="en">
  2. Вам не хватает стандартного кода усилителя
  3. Ваш CSS должен быть внутри<amp-style></style>тег
  4. AMP не допускает пользовательских сценариев, поэтому ваш сценарийinitMap()не соответствует
  5. Если вы хотите встроить карту, вы должны поместить ее внутрь<amp-iframe>тег. Как это:

<amp-iframe width="600"
  height="400"
  layout="responsive"
  sandbox="allow-scripts allow-same-origin allow-popups"
  frameborder="0"
  src="https://www.google.com/maps/embed/v1/place?q=place_id:ChIJ2eUgeAK6j4ARbn5u_wAGqWA&key=AIzaSyCNCZ0Twm_HFRaZ5i-FuPDYs3rLwm4_848">
</amp-iframe>

Другие вопросы по тегам