无法删除功能的地图部分

时间:2016-01-09 16:44:00

标签: javascript google-maps-api-3

我从谷歌的例子中大量借用了一些代码。我使用的只是此代码的Google商家信息结果部分,因此我想删除map部分。因此,当我这样做时,它会引发Cannot read property 'innerHTML' of undefined错误,因为我猜测var service函数需要它。

删除此区域代码的任何帮助?

var map;
var infowindow;

// Create Google Map with location at center

function initMap(latitude, longitude) {
  var location = {lat: latitude, lng: longitude};
  console.log(location);

  // REMOVE THIS SECTION
  map = new google.maps.Map(document.getElementById('map'), {
    center: location,
    zoom: 15
  });
  // ^^ REMOVE THIS SECTION

  var service = new google.maps.places.PlacesService(map);
  service.nearbySearch({
    location: location,
    radius: 3200,
    types: ['school']
  }, callback);
}

// List nearby places

function callback(results, status) {
  if (status === google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      listPlaces(results[i]);
    }
  }
}

4 个答案:

答案 0 :(得分:0)

好吧,它被称为“Googgle 地图 API”,原因如下: - )

此外,您可以隐藏地图,但服务条款包括在网页上某处显示“由Google提供支持”徽标的要求。

答案 1 :(得分:0)

你可以使用

<div id="map" style='display:none'></div>

在你的地图上。
通过这种方式,其他代码仍可用于工作,并且不会显示在您的页面上

答案 2 :(得分:0)

Ilya是正确的,您使用Google Google协议数据的许可证需要归因(请参阅https://developers.google.com/maps/documentation/javascript/places?hl=en#LogoRequirements)。

此前有人问过类似的问题:google places library without map

为了摆脱地图,我认为你可以做这样的事情:

map = new google.maps.Map(document.createElement('div'), {
    center: location,
    zoom: 15
});

这样你就不会向DOM添加任何内容。请记住添加Powered by Google图形。 (https://developers.google.com/places/documentation/images/powered-by-google.zip

答案 3 :(得分:0)

根据文件:

  1. 不需要地图,but if one isn't displayed you must显示&#34;由Google提供支持&#34;带有该数据的徽标:
  2.   

    如果您的应用程序在不显示Google地图的网页或视图上显示Google商家信息API数据,则必须显示“由Google提供支持”#34;带有该数据的徽标。

    1. PlacesService Constructor需要google.maps.Map object或HTMLDivElement(您不 提供地图,您可以提供div来显示 manadatory attributions)
    2.   

      构造

           

      PlacesService(attrContainer: HTMLDivElement | Map)创建一个新的PlacesService实例,用于在指定的容器中呈现属性。

      代码段

      &#13;
      &#13;
      function initMap(latitude, longitude) {
        var location = {
          lat: latitude,
          lng: longitude
        };
        console.log(location);
      
        var service = new google.maps.places.PlacesService(document.getElementById('map'));
        service.nearbySearch({
          location: location,
          radius: 3200,
          types: ['school']
        }, callback);
      }
      
      // List nearby places
      function callback(results, status) {
        if (status === google.maps.places.PlacesServiceStatus.OK) {
          for (var i = 0; i < results.length; i++) {
            document.getElementById('places').innerHTML += results[i].name + ", " + results[i].vicinity + "<br>";
            // listPlaces(results[i]);
          }
        } else {
          document.getElementById('places').innerHTML += "Status: " + status + "<br>";
        }
      }
      google.maps.event.addDomListener(window, "load", function() {
        initMap(40.7127837, -74.0059413);
      });
      &#13;
      #map {
        height: auto;
        width: 100%;
        margin: 0px;
        padding: 0px
      }
      &#13;
      <script src="https://maps.googleapis.com/maps/api/js?libraries=places"></script>
      <div id="map"></div>
      <div id="places"></div>
      <img src="https://developers.google.com/places/documentation/images/powered-by-google-on-white.png" alt="Google Logo" />
      &#13;
      &#13;
      &#13;