首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌地图API V3 -街景下全景链接

谷歌地图API V3 -街景下全景链接
EN

Stack Overflow用户
提问于 2013-10-17 20:55:26
回答 2查看 2.8K关注 0票数 0

首先。我寻找了很长时间,但我没有找到我想要的!我怎样才能得到下一幅全景图?我只知道需要一个全景链接。链接可以通过getLinks();获得。我看过谷歌的街景手册,但我想用自己的导航按钮导航,而不是谷歌的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-18 00:56:12

修改后的Google API v3街道视图-事件示例版本在下面添加按钮,通过链接导航街景全景图。

在全球范围内:

代码语言:javascript
复制
var panorama = null;
var links = null;

function setPano2link(i) {
  panorama.setPano(links[i].pano);
  panorama.setPov({heading:links[i].heading,pitch:0});
  panorama.setVisible(true);
}

修改"links_changed“事件处理程序以添加导航按钮:

代码语言:javascript
复制
  google.maps.event.addListener(panorama, 'links_changed', function() {
      var linksTable = document.getElementById('links_table');
      while(linksTable.hasChildNodes()) {
        linksTable.removeChild(linksTable.lastChild);
      };
      links =  panorama.getLinks();
      for (var i in links) {
        var row = document.createElement('tr');
        linksTable.appendChild(row);
        var labelCell = document.createElement('td');
        labelCell.innerHTML = '<b>Link: ' + i + '</b>';
        var valueCell = document.createElement('td');
        valueCell.innerHTML = links[i].description;
        var btnCell = document.createElement('td');
        btnCell.innerHTML = '<input type="button" value="goto" onclick="setPano2link('+i+')"></input>';
        var panoIdCell = document.createElement('td');
        panoIdCell.innerHTML = links[i].pano;
        var headingCell = document.createElement('td');
        headingCell.innerHTML = links[i].heading;
        linksTable.appendChild(labelCell);
        linksTable.appendChild(valueCell);
        linksTable.appendChild(btnCell);
        linksTable.appendChild(panoIdCell);
        linksTable.appendChild(headingCell);
      }
  });

工作实例

完整代码:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Street View events</title>
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
var cafe = new google.maps.LatLng(37.869085,-122.254775);
var panorama = null;
var links = null;

function setPano2link(i) {
  panorama.setPano(links[i].pano);
  panorama.setPov({heading:links[i].heading,pitch:0});
  panorama.setVisible(true);
}

function initialize() {

  var panoramaOptions = {
    position: cafe,
    pov: {
      heading: 270,
      pitch: 0
    },
    visible: true
  };
  panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'), panoramaOptions);

  google.maps.event.addListener(panorama, 'pano_changed', function() {
      var panoCell = document.getElementById('pano_cell');
      panoCell.innerHTML = panorama.getPano();
  });

  google.maps.event.addListener(panorama, 'links_changed', function() {
      var linksTable = document.getElementById('links_table');
      while(linksTable.hasChildNodes()) {
        linksTable.removeChild(linksTable.lastChild);
      };
      links =  panorama.getLinks();
      for (var i in links) {
        var row = document.createElement('tr');
        linksTable.appendChild(row);
        var labelCell = document.createElement('td');
        labelCell.innerHTML = '<b>Link: ' + i + '</b>';
        var valueCell = document.createElement('td');
        valueCell.innerHTML = links[i].description;
        var btnCell = document.createElement('td');
        btnCell.innerHTML = '<input type="button" value="goto" onclick="setPano2link('+i+')"></input>';
        var panoIdCell = document.createElement('td');
        panoIdCell.innerHTML = links[i].pano;
        var headingCell = document.createElement('td');
        headingCell.innerHTML = links[i].heading;
        linksTable.appendChild(labelCell);
        linksTable.appendChild(valueCell);
        linksTable.appendChild(btnCell);
        linksTable.appendChild(panoIdCell);
        linksTable.appendChild(headingCell);
      }
  });


  google.maps.event.addListener(panorama, 'position_changed', function() {
      var positionCell = document.getElementById('position_cell');
      positionCell.firstChild.nodeValue = panorama.getPosition() + '';
  });

  google.maps.event.addListener(panorama, 'pov_changed', function() {
      var headingCell = document.getElementById('heading_cell');
      var pitchCell = document.getElementById('pitch_cell');
      headingCell.firstChild.nodeValue = panorama.getPov().heading + '';
      pitchCell.firstChild.nodeValue = panorama.getPov().pitch + '';
  });
}

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

    </script>
  </head>
  <body>
    <div id="pano" style="width: 45%; height: 100%;float:left"></div>
    <div id="panoInfo" style="width: 45%; height: 100%;float:left">
    <table>
      <tr>
        <td><b>Position</b></td><td id="position_cell">&nbsp;</td>
      </tr>
      <tr>
        <td><b>POV Heading</b></td><td id="heading_cell">270</td>
      </tr>
      <tr>
        <td><b>POV Pitch</b></td><td id="pitch_cell">0.0</td>
      </tr>
      <tr>
        <td><b>Pano ID</b></td><td id="pano_cell">&nbsp;</td>
      </tr>
      <table id="links_table"></table>
    </table>
    </div>
  </body>
</html>
票数 4
EN

Stack Overflow用户

发布于 2016-12-14 01:21:38

  • 转到以下链接:https://developers.google.com/maps/documentation/embed/start
  • 转到Google并在您想要的位置上的浏览器中输入街景模式。
  • 点击“共享.
  • 搜索hyperlink-string (CTRL/CMD)中的"!2e",将字符串从"!“后面的第一个字母复制到”!1sE 222“中"s”之后的第一个字母。

示例: -SWqF6BeQEBI%2FWBXbp08W9pI%2FAAAAAAAACRo%2F17TZj7OS3OMBBkrcNfZ45YlZxGydVryDwCLIB !1s !2e 如果中有任何"%2F“,则需要用"/".替换它们。如果开始使用"-"-symbol,则需要用"F:-".替换它

  • 现在回到第一个项目中提供的链接,点击“显示街景或自定义全景”选项卡。
  • 通过新复制的字符串到“自定义全景ID:”字段,然后按enter键
  • 现在输入API- key;请记住将右API-key添加到API-项目中,该项目是为全景/街道视图而创建的!(Google嵌入API;您可以为您的项目添加多个键)如果您还没有单击"Get Key“,请单击”Get Key“。

就这样!

您将得到一个个人HTML代码,您可以通过您的HTML-文档。这是经过测试和工作的日期,我写了这个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19437096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档