我正在使用Google开发一个Google室内应用程序。我使用的全景图片,可在谷歌街景。有时,我想通过编程改变位置,例如,当有人单击一个小地图中的位置时。但是,当我调用panorama.getPosition()时,会自动被重定向到另一个位置。实际上,我可以看到position_changed事件被触发了两次。
我已经找到了这个问题的原因。这与谷歌地图在街景室内使用的起始/入口位置有关。

两个橙色圆圈描绘了进入大楼的两个可能的起点/入口点。当你把佩格曼扔到这些圆圈上时,你会进入街景室内的大楼。
看起来,当这些起点存在时,Google不允许您以编程方式将位置设置为除任何起点之外的其他位置。它总是把你重新引导到起点之一。这显然不是我想要的。
//The starting/entrance position is lat: 52.089988, lng: 5.178041
//The position I want to go to
var goToPosition = {lat: 52.0898852, lng: 5.1780344};
//Position changed EventListener
google.maps.event.addListener(panorama, 'position_changed', function() {
var newPosition = panorama.getPosition();
console.log('changed position to:', newPosition.lat(), newPosition.lng());
});
//Calling setPosition with goToPosition
panorama.setPosition(goToPosition);
//Will result in two console.logs directly printed after another:
changed position to: 52.0898852 5.1780344 //goToPosition
changed position to: 52.089988 5.178041 //starting positionconsole.logs显示,该位置看起来是在彼此之后被直接更改两次,在起始位置结束位置。
我想知道是否有其他人遇到过这个问题,是否有一个已知的解决办法。我正在与上传全景图片到谷歌的摄影师联系。也许这些图片上传到谷歌并配置的方式是有意义的。我想知道这是否可以在我的应用程序代码中修复,或者它是否是API问题,甚至是预期的行为。
谢谢!
发布于 2015-11-30 19:46:42
我找到了解决我的问题的办法,部分要归功于@LilDevil的回答。
每个位置的全景图都有一个全景ID。如果你事先知道全景ID,它可以使用setPano()移动到那个位置。
我存储全景ID连同lat,lng的一个位置。当单击地图时,我计算出离单击位置最近的已知位置。然后,我可以查找属于该位置的全景ID,并使用setPano()将其移动到全景图。
这似乎不是解决问题的非常干净的方法,因为全景ID可能会随着时间的推移而改变(例如,当新的全景图片上传到时)。但是,我在文档中找不到任何说明不应该使用该方法的东西。文档中说,在处理自定义全景图片时,应该使用这种方法,而在我的情况下并非如此。另外,在这种特殊情况下,我们可以控制何时上传新的全景图片(因为这是针对Google的),因此如果发生这种情况,我可以更改存储的全景图ID。
发布于 2015-11-28 19:36:31
你不能把全景画成任何和弦。您需要在起始和弦和半径中使用getPanorama(),以找到最近的全景图,然后将pano设置为这些和弦。关于https://developers.google.com/maps/documentation/javascript/streetview?hl=en的几个例子
https://stackoverflow.com/questions/33971396
复制相似问题