ЗДЕСЬ карты api (js) проблема после возвращения из другой ссылки - PullRequest
0 голосов
/ 23 мая 2019

Я создаю приложение с ruby ​​на рельсах, и я только что реализовал картографический сервис с API-интерфейсом «ЗДЕСЬ интерактивные карты» в виде javascript-кода.

Работает нормально, но если я нажимаю на ссылку и затем использую браузер 'go back' , при перезагрузке страницы карта становится серой и загружает другую рабочую карту чуть нижесерый блок.Если я использую кнопку перезагрузки браузера, она перезагружает все и снова показывает только одну рабочую карту.

Тогда, вероятно, что-то сохранится. Как я могу избежать такого поведения и заставить скрипт перезагружаться как новый?

вот код (просто скопируйте и вставьте с сайта, но он уже не работает)


<div id="map" style="height: 500px; margin: 2%; background: grey" > </div>

<script type="text/javascript">
  // Initialize the  communication with the platform
  var platform = new H.service.Platform({
    'app_id': '....',
    'app_code': '....'
  });
  var pixelRatio = window.devicePixelRatio || 1;
  var defaultLayers = platform.createDefaultLayers({
    tileSize: pixelRatio === 1 ? 256 : 512,
    ppi: pixelRatio === 1 ? undefined : 320
  });

  //Initialize map
  var map = new H.Map(document.getElementById('map'),
    defaultLayers.normal.map, {
      pixelRatio: pixelRatio,
      zoom: 12,
      center: { lat: 41.90, lng: 12.5 }
    });

  //for interactions and UI components
  var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
  var ui = H.ui.UI.createDefault(map, defaultLayers);

  ...markers.... 
</script>

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Возможно, это не самое лучшее, но я исправил это с помощью этого кода

if (document.readyState=='complete'){
  location.reload();
}

document.addEventListener('DOMContentLoaded', function(){
   // rest of code 
});
0 голосов
/ 23 мая 2019

Попробуйте обернуть ваши js в готовый документ, если вы не используете jquery:

document.addEventListener('DOMContentLoaded', function() {
    // rest of your js goes inside here
}, false);

или, если у вас есть jquery, то:

$(document).ready ( function() {
   // rest of your js goes inside here
});​
...