谷歌舆图 API 开辟之信息窗口

信息窗口

简介

InfoWindow 在舆图上方给定位置的弹出窗口中显现内容(一般为文本或图象)。信息窗口具有一个内容地区和一个锥形柄。柄顶部与舆图上的某指定位置相连。

一般,您会将信息窗口附加到标记,但您也能够将信息窗口附加到特定纬度/经度,以下面的“增加信息窗口”部份所述。

增加信息窗口

InfoWindow 组织函数采用了 InfoWindowOptions 对象字面量,后者为显现信息窗口指定了一组初始参数。

InfoWindowOptions 对象字面量包括以下字段:

  • content:个中包括要在信息窗口中显现的本文字符串或 DOM 节点。

  • pixelOffset:个中包括从信息窗口的顶部到信息窗口锚定位置的偏移量。实际上,您不该也无需修正此字段。您能够将其保存为默许值。

  • position:个中包括此信息窗口锚定位置的 LatLng。注:InfoWindow 可附加到 Marker对象(此情况下,其位置取决于标记的位置),或附加到舆图自身指定的 LatLng 位置。在标记上翻开信息窗口将自动更新 position

  • maxWidth:用于指定信息窗口的最大宽度(以像素为单元)。默许情况下,信息窗口会依据个中包括的内容举行扩大,假如信息窗口填满舆图,那末文本将会自动换行。假如您增加maxWidth,则信息窗口将自动换行以强迫顺应指定的宽度。假如信息窗口到达最大宽度,但屏幕上仍有垂直空间,则信息窗口可能会垂直扩大。

InfoWindow 的内容可包括文本字符串、HTML 代码段或 DOM 元素。要设置此内容,请在 InfoWindowOptions 中指定该内容,或许对 InfoWindow 显式挪用 setContent()

假如您想要显式调解内容的大小,则可将其归入 <div> 元素中,并运用 CSS 设置 <div> 的款式。您还能够运用 CSS 启用转动功用。请注意,假如您不启用转动功用,且内容超越信息窗口中可用的空间,则内容可能会溢出信息窗口。

翻开信息窗口

建立信息窗口时,它不会自动显现在舆图上。要使信息窗口可见,则需对 InfoWindow 挪用 open() 要领,并向其通报其要在上面翻开的 Map,也能够挑选向其通报其要锚定到的 Marker。假如没有供应任何标记,则信息窗口将在其 position 属性指定的位置处翻开。

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Info window with <code>maxWidth</code></title>
    <style>
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #map {
        height: 100%;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>

// This example displays a marker at the center of Australia.
// When the user clicks the marker, an info window opens.
// The maximum width of the info window is set to 200 pixels.

function initMap() {
  var uluru = {lat: -25.363, lng: 131.044};
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 4,
    center: uluru
  });

  var contentString = '<div id="content">'+
      '<div id="siteNotice">'+
      '</div>'+
      '<h1 id="firstHeading" class="firstHeading">Uluru</h1>'+
      '<div id="bodyContent">'+
      '<p><b>Uluru</b>, also referred to as <b>Ayers Rock</b>, is a large ' +
      'sandstone rock formation in the southern part of the '+
      'Northern Territory, central Australia. It lies 335&#160;km (208&#160;mi) '+
      'south west of the nearest large town, Alice Springs; 450&#160;km '+
      '(280&#160;mi) by road. Kata Tjuta and Uluru are the two major '+
      'features of the Uluru - Kata Tjuta National Park. Uluru is '+
      'sacred to the Pitjantjatjara and Yankunytjatjara, the '+
      'Aboriginal people of the area. It has many springs, waterholes, '+
      'rock caves and ancient paintings. Uluru is listed as a World '+
      'Heritage Site.</p>'+
      '<p>Attribution: Uluru, <a href="https://en.wikipedia.org/w/index.php?title=Uluru&oldid=297882194">'+
      'https://en.wikipedia.org/w/index.php?title=Uluru</a> '+
      '(last visited June 22, 2009).</p>'+
      '</div>'+
      '</div>';

      var infowindow = new google.maps.InfoWindow({
        content: contentString,
        //maxWidth: 200
      });
    
      var marker = new google.maps.Marker({
        position: uluru,
        map: map,
        title: 'Uluru (Ayers Rock)'
      });
      marker.addListener('click', function() {
        infowindow.open(map, marker);
      });
    }
    
    </script>
    <script async defer
      src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&callback=initMap"></script>
  </body>
</html>

封闭信息窗口

默许情况下,InfoWindow 坚持翻开状况,直至用户点击封闭控件(信息窗口右上角的叉号)。假如您须要,能够经由过程挪用其 close() 要领来显式封闭信息窗口。

移动信息窗口

  • 对信息窗口挪用 setPosition()

  • 运用 InfoWindow.open() 要领将信息窗口附加到新标记上。注:假如您挪用 open() 而不通报标记,InfoWindow 将运用组织时经由过程 InfoWindowOptions 对象字面量指定的位置。

本身的例子

能够参考下https://segmentfault.com/a/11…,也有信息窗口的完成。

    原文作者:旅图灬
    原文地址: https://segmentfault.com/a/1190000006228534
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞