如何设置通过google maps api kmllayer调用的kml文件的infowindow的宽度?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置通过google maps api kmllayer调用的kml文件的infowindow的宽度?相关的知识,希望对你有一定的参考价值。

如何设置通过google maps api kmllayer函数调用的kml文件的infowindow的宽度?

这是我的代码:

<!DOCTYPE html>
<html>
<head>

 <meta name="viewport" content="initial-scale=1.0">
 <meta charset="utf-8">

</head>
<body>
 <div id="mapindex"></div>
  <script>
     var map;

     function initMap() {

     map = new google.maps.Map(document.getElementById('mapindex'), {
      center: {
        lat: 54.5559,
        lng: 16.5984
      },
      zoom: 7,
      mapTypeId: 'hybrid'
     });

     var ctaLayer = new google.maps.KmlLayer({
      url: 'http://www.instead.com.pl/test.kml?time=' + new Date().getTime(),
      map: map,
      preserveViewport: true,
      });
      }
    </script>

     <script async defer
     src="https://maps.googleapis.com/maps/api/js?callback=initMap">
    </script>
  </body>

 </html>

JSFiddle example

但是我想设置infowindow的宽度或最大宽度,或者仅设置名称标签。

我真的已经阅读了我在互联网上找到的所有内容,但无法找到解决方案。甚至有可能实现吗?

答案

您可以取消单击KmlLayer时创建的标准InfoWindow,而是创建另一个具有maxWidth的InfoWindow。以下是对代码的修改:

Proof of concept JSBin

<!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="initial-scale=1.0">
 <meta charset="utf-8">
 <style>
   html,
  body {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  font-size: 100%;
  font-family: Ubuntu, Arial, sans-serif;
}

#mapindex {
  width: 100%;
  height: 100%;
  position: relative;
}
  </style>
</head>
<body>
 <div id="mapindex"></div>
  <script>
     var map;

     function initMap() {

       var map = new google.maps.Map(document.getElementById('mapindex'), {
        center: {
          lat: 54.5559,
          lng: 16.5984
        },
        zoom: 7,
        mapTypeId: 'hybrid'
       });

     var kmlLayer = new google.maps.KmlLayer({
      url: 'http://www.instead.com.pl/test.kml?time=' + new Date().getTime(),
      map: map,
      preserveViewport: true,
      suppressInfoWindows: true
      });

     var infoWindow = new google.maps.InfoWindow();

     kmlLayer.addListener('click', function(event) {
         var content = event.featureData.infoWindowHtml;
         infoWindow.setOptions({
             content: content,
             position: event.latLng,
             maxWidth: 200
         });

         infoWindow.open(map);
     });

    }
    </script>

     <script async defer src="https://maps.googleapis.com/maps/api/js?callback=initMap">
    </script>
  </body>
</html>
另一答案

看起来这是experimental version中的(另一个)错误

proof of concept fiddle (using v=3)

screenshot of resulting map

代码段:

html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  font-size: 100%;
  font-family: Ubuntu, Arial, sans-serif;
}

#mapindex {
  width: 100%;
  height: 100%;
  position: relative;
}
<!DOCTYPE html>
<html>

<head>

  <meta name="viewport" content="initial-scale=1.0">
  <meta charset="utf-8">

</head>

<body>
  <div id="mapindex"></div>
  <script>
    var map;

    function initMap() {

      map = new google.maps.Map(document.getElementById('mapindex'), {
        center: {
          lat: 54.5559,
          lng: 16.5984
        },
        zoom: 7,
        mapTypeId: 'hybrid'
      });
      var infowindow = new google.maps.InfoWindow();
      var ctaLayer = new google.maps.KmlLayer({
        url: 'http://www.instead.com.pl/test.kml?time=' + new Date().getTime(),
        map: map,
        preserveViewport: true,
      });
    }
  </script>

  <script async defer src="https://maps.googleapis.com/maps/api/js?callback=initMap&v=3">
  </script>
</body>

</html>

以上是关于如何设置通过google maps api kmllayer调用的kml文件的infowindow的宽度?的主要内容,如果未能解决你的问题,请参考以下文章

Google Maps API 和 KML 文件 LocalHost 开发选项

JavaScript 使用“我的地图”中的.kml文件的Google Maps API

google maps api v3 导出当前地图的 kml 文件

使用 Google Maps API V3,确定标记是不是在 KML 图层边界内

如何使用Google API,以便将先前创建的KML文件发送到“我的Google地图”,然后获取返回的URL以显示在网页中

使用 kml 文件时,Google 地图缩放被覆盖