在Google地图街景视图中禁用建筑物的室内视图

时间:2015-08-27 18:29:37

标签: google-maps google-maps-api-3 google-street-view

我正在开发一个项目,在Google地图上显示一系列标记,并允许用户搜索并获取有关这些位置的相关信息。我没有禁用街景视图,因为我想让用户可以从外面看到建筑物。

但是,对于某些位置,在进入街景模式时,Google地图会立即显示相邻商家的室内。我想要的是能够完全禁用我的应用程序的室内视图。

是否有人知道Google Maps API中的某个设置可以做到这一点,或者可能是一个聪明的黑客来解决问题?我没有诚实地找到任何东西。

1 个答案:

答案 0 :(得分:9)

在实验版本(目前为v = 3.21)中,现在可以在StreetViewSource

中提供StreetViewLocationRequest

StreetViewSource上课

google.maps.StreetViewSource class

Identifiers to limit Street View searches to selected sources.

Constant
DEFAULT Uses the default sources of Street View, searches will not be limited to specific sources.
OUTDOOR Limits Street View searches to outdoor collections only.

代码段(包含source: OUTDOOR):



/*
 * Click the map to set a new location for the Street View camera.
 */

var map;
var panorama;

function initMap() {
  var myLatlng = new google.maps.LatLng(51.343364, 12.378962999999999);
  var sv = new google.maps.StreetViewService();

  panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'));

  // Set up the map.
  map = new google.maps.Map(document.getElementById('map'), {
    center: myLatlng,
    zoom: 16,
    streetViewControl: false
  });

  // Set the initial Street View camera to the center of the map
  sv.getPanorama({
    location: myLatlng,
    radius: 50,
    source: google.maps.StreetViewSource.OUTDOOR
  }, processSVData);

  // Look for a nearby Street View panorama when the map is clicked.
  // getPanoramaByLocation will return the nearest pano when the
  // given radius is 50 meters or less.
  map.addListener('click', function(event) {
    sv.getPanorama({
      location: event.latLng,
      radius: 50
    }, processSVData);
  });
}

function processSVData(data, status) {
  if (status === google.maps.StreetViewStatus.OK) {
    var marker = new google.maps.Marker({
      position: data.location.latLng,
      map: map,
      title: data.location.description
    });

    panorama.setPano(data.location.pano);
    panorama.setPov({
      heading: 270,
      pitch: 0
    });
    panorama.setVisible(true);

    marker.addListener('click', function() {
      var markerPanoID = data.location.pano;
      // Set the Pano to use the passed panoID.
      panorama.setPano(markerPanoID);
      panorama.setPov({
        heading: 270,
        pitch: 0
      });
      panorama.setVisible(true);
    });
  } else {
    console.error('Street View data not found for this location.');
  }
}
google.maps.event.addDomListener(window, 'load', initMap);

      html,
      body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #map {
        height: 100%;
      }

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="map" style="width: 45%; height: 100%;float:left"></div>
<div id="pano" style="width: 45%; height: 100%;float:left"></div>
&#13;
&#13;
&#13;