谷歌地图街景 - 如何获取全景ID

12

可能是重复或类似的问题。我在这里发布了一个解决方案,https://dev59.com/v4_ea4cB1Zd3GeqPIgON#41100453 - Jay Dubal
7个回答

13

谷歌在8月/9月的更新中更改了全景图ID的格式。与以前类似,全景图ID可以在!1s和!2e之间找到。因此,在Jason发布的示例中,全景图ID将是(urldecoded):

F:-gVtvWrACv2k/Vnh0Vg8Z8YI/AAAAAAABLWA/a-AT4Wb8MD8

为了使其对我们有用,我们需要在其前面添加F:。还有一个已知的错误,需要添加未记录的标志才能使用新的全景照片(请参见https://code.google.com/p/gmaps-api-issues/issues/detail?id=7452#c51):

google.maps.streetViewViewer = 'photosphere';

9

根据您的回答,我得到了全景图ID:F:-pMnNjSor9eU / VlPYTVL0MeI / AAAAAAAAR0U / DDixeQie1Jo,但当我将其设置为streetViewPanorama时,它无法加载。它显示黑屏,请问您能帮我吗? - Suraj

6
  1. 在谷歌地图上找到全景图
  2. 打开开发者工具控制台
  3. 复制/粘贴/运行以下代码。结果应该是全景图的ID。

"F:".concat(window.location.href.split("!1s")[1].split("!2e")[0]).replace('%2F','/')

感谢 @Rgrauphics

这将仅替换第一个%2F。如果您想全部替换,必须使用正则表达式进行替换: "F:".concat(window.location.href.split("!1s")[1].split("!2e")[0]).replace(/%2F/g,'/') - kaiserkiwi


3

正如Justin MacLeod所提到的,但这是我确切的操作方法。

您需要调整ID编号。您仍然可以在!1s和!2e之间找到ID编号,但需要更新您的URL才能使其正常工作。

Add F: to the start of your ID
Change %2F in the ID to /

我的ID示例
之前:

-3_7tAKLhLLU%2FV0nuKmxj7xI%2FAAAAAAAAdE8%2FHZYhfYoBGqAsQw-63snzF9OkIy7YT051ACLIB

之后:

F:-3_7tAKLhLLU/V0nuKmxj7xI/AAAAAAAAdE8/HZYhfYoBGqAsQw-63snzF9OkIy7YT051ACLIB

1
为了获得全景ID(pano),我开发了一个小的HTML页面,通过它你可以获取一些参数(缩放/视角、俯仰和航向),并获取街景图像请求的HTTP URL。 < p >别忘了用你自己的API密钥(YOUR_API_KEY)替换它(显然)< /em >< /p >

享受谷歌地图的乐趣吧!

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<style>
    html,
    body {
        height: 95%;
        margin: 0;
        padding: 0;
    }

    #map,
    #pano {
        float: left;
        height: 95%;
        width: 45%;
    }
</style>
</head>

<body>
<div id="tray">
    <button id="doer" onclick="doThings()">do it</button>
    <span id="resulting"></span>
</div>
<div id="map"></div>
<div id="pano"></div>
<script>
    var panorama, map;
    var APIkey= "YOUR_API_KEY"

    function initialize() {
        var fenway = {
            lat: 42.345573,
            lng: -71.098326
        };
        var agbar = new google.maps.LatLng(41.4035482, 2.1894355);
        map = new google.maps.Map(document.getElementById('map'), {
            center: agbar,
            zoom: 14
        });
        panorama = new google.maps.StreetViewPanorama(
            document.getElementById('pano'), {
                position: agbar,
                pov: {
                    heading: 34,
                    pitch: 10
                }
            });
        map.setStreetView(panorama);
    }

    function doThings() {
        console.log("doing things");
        document.getElementById("resulting").innerHTML = "https://maps.googleapis.com/maps/api/streetview?size=640x640" +"&pano=" + panorama.getPano() + "&heading=" + panorama.getPov().heading + "&pitch=" + panorama.getPov().pitch + "&fov="+ (180/ (Math.pow(2, panorama.getZoom()?panorama.getZoom():1)))+ "&key=" + APIkey;
      //use the next line to open in a new tab the resulting image at max size (640x640)
        window.open("https://maps.googleapis.com/maps/api/streetview?size=640x640" + "&pano=" + panorama.getPano() + "&heading=" + panorama.getPov().heading + "&pitch=" + panorama.getPov().pitch + "&fov="+ (180/ (Math.pow(2, panorama.getZoom())))+ "&key=" +APIkey)
    }
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initialize">
</script>
</body>

</html>

说明:创建一个 HTML 文件,复制代码,替换 API 密钥,然后在浏览器中打开 HTML 文件,点击“do it”按钮。

更多参考信息可以在 Google 的以下网址中找到:https://developers.google.com/maps/documentation/javascript/streetview#StreetViewPanoramas


0
当您在Google地图上查看室内全景时,只需单击旗帜即可报告全景。然后您将在URL中看到一个名为“panoid”的参数,并带有其中的全景ID。您只需将其复制到那里即可。据我所知,在全景页面视图本身上,它不再出现在URL的任何位置。

似乎不再是这种情况了。 - kaiserkiwi
全景ID不再在panoid参数中,而是在报告页面URL的“!2s”和“&”之间。应为22个字符长。仍然是最简单的方法,只需点击几下即可从全景页面获取全景ID,无需编程。只是为了澄清,您实际上并没有报告一个完美的全景,而是打开报告表单以获取ID,然后关闭表单而不提交它。PS所有其他回复似乎都已过时。 - Marassa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接