【问题标题】:I can't get my code to make the infobox pop up when I click on a marker当我点击标记时,我无法让我的代码弹出信息框
【发布时间】:2019-05-28 19:07:31
【问题描述】:

所以我正在使用谷歌地图 api 的信息框插件/插件,我可以让标记出现,但是当我点击它时没有任何反应。我的代码主要来自示例,但由于某种原因它没有按应有的方式弹出。我是否需要以尚未导入的方式导入它?(因为当我声明一个新的信息框时,信息框没有突出显示)。我该怎么办?

信息框插件:https://raw.githubusercontent.com/googlemaps/v3-utility-library/master/infobox/src/infobox.js

我的 jsfiddle:https://jsfiddle.net/kaidemarco/06wpx75j/49/

*我也尝试使用显示您的代码进行格式化,但效果不佳。

function initMap() {
  var Jays = {lat:  39.280126,lng: -74.574394};

 var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 14,
    center: Jays
  });

var marker = new google.maps.Marker({
            map: map,
            draggable: false,
            position: Jays,
            visible: true
        });

var boxText = document.createElement("div");
        boxText.style.cssText = "border: 1px solid black; margin-top: 8px; background: yellow; padding: 5px;";
        boxText.innerHTML = "City Hall, Sechelt<br>British Columbia<br>Canada";

var myOptions = {
             content: boxText
            ,disableAutoPan: false
            ,maxWidth: 0
            ,pixelOffset: new google.maps.Size(-140, 0)
            ,zIndex: null
            ,boxStyle: { 
              background: "url('tipbox.gif') no-repeat"
              ,opacity: 0.75
              ,width: "280px"
             }
            ,closeBoxMargin: "10px 2px 2px 2px"
            ,closeBoxURL: "https://www.google.com/intl/en_us/mapfiles/close.gif"
            ,infoBoxClearance: new google.maps.Size(1, 1)
            ,isHidden: false
            ,pane: "floatPane"
            ,enableEventPropagation: false
        };


google.maps.event.addListener(marker, "click", function (e) {
            ib.open(map, this);
      });
      var ib = new InfoBox(myOptions);
        ib.open(map, marker);

}

【问题讨论】:

  • 你的 jsfiddle 不起作用。您正在直接链接到不可执行的 github 存储库:Refused to execute script from 'https://raw.githubusercontent.com/googlemaps/v3-utility-library/master/infobox/src/infobox.js' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled.Uncaught (in promise) ReferenceError: InfoBox is not defined

标签: html google-maps google-maps-api-3 maps infobox


【解决方案1】:

问题在于 InfoBox 依赖于 Google Maps Javascript API。解决此问题的一种方法是以正确的顺序同步加载 API 和 InfoBox。

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/googlemaps/v3-utility-library@master/infobox/src/infobox.js"></script>

在窗口加载时调用initMap函数:

google.maps.event.addDomListener(window, 'load', initMap);

proof of concept fiddle

function initMap() {
  var Jays = {
    lat: 39.280126,
    lng: -74.574394
  };

  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 14,
    center: Jays
  });

  var marker = new google.maps.Marker({
    map: map,
    draggable: false,
    position: Jays,
    visible: true
  });

  var boxText = document.createElement("div");
  boxText.style.cssText = "border: 1px solid black; margin-top: 8px; background: yellow; padding: 5px;";
  boxText.innerHTML = "City Hall, Sechelt<br>British Columbia<br>Canada";

  var myOptions = {
    content: boxText,
    disableAutoPan: false,
    maxWidth: 0,
    pixelOffset: new google.maps.Size(-140, 0),
    zIndex: null,
    boxStyle: {
      background: "url('tipbox.gif') no-repeat",
      opacity: 0.75,
      width: "280px"
    },
    closeBoxMargin: "10px 2px 2px 2px",
    closeBoxURL: "https://www.google.com/intl/en_us/mapfiles/close.gif",
    infoBoxClearance: new google.maps.Size(1, 1),
    isHidden: false,
    pane: "floatPane",
    enableEventPropagation: false
  };


  google.maps.event.addListener(marker, "click", function(e) {
    ib.open(map, this);
  });
  var ib = new InfoBox(myOptions);
  ib.open(map, marker);

}
google.maps.event.addDomListener(window, 'load', initMap);
#map {
  height: 100%;
}

html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}
<!-- Replace the value of the key parameter with your own API key. -->
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<script src="https://cdn.jsdelivr.net/gh/googlemaps/v3-utility-library@master/infobox/src/infobox.js"></script>
<div id="map"></div>

【讨论】:

  • 真的非常感谢。几天来我一直在努力解决这个问题,非常感谢您抽出时间来帮助我。
  • 如果这回答了您的问题,请accept it
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 2022-12-19
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多