我正在使用Google街景图片API来显示地址图片。虽然大多数图像都非常准确,但我注意到有一些图像来自错误的角度,就像角落里的房子,图像来自小街,而不是前街。当我查看Google地图时,左侧面板顶部显示的图片是正确的。
实施例; 下面是使用API instructions中的网址参数的图片; http://maps.googleapis.com/maps/api/streetview?size=300x200&location=39.408751,-104.917738&sensor=false
以下是Google地图左侧面板中显示的相同位置的图片
有没有办法使用API获得“更好”的角度?
答案 0 :(得分:4)
如果您知道地址,并且ROOFTOP地理编码器结果可用,您可以找到路上最近的位置,然后使用它来请求街景:
(如果你不知道地址,你可以反转地理编码位置,就像我在这里做的那样)
此问题的工作示例:Using google street view with a marker, how do I point the POV at a marker?
工作代码段:
var geocoder = new google.maps.Geocoder();
var myStreetView = null;
var marker = null;
function geocodeAddress() {
var address = document.getElementById('address').value;
geocoder.geocode({
'address': address
}, function(results, status) {
//alert (results);
if (status == google.maps.GeocoderStatus.OK) {
//alert(results[0].geometry.location);
myStreetView = new google.maps.StreetViewPanorama(document.getElementById("map_canvas"));
myStreetView.setPosition(results[0].geometry.location);
google.maps.event.addListenerOnce(myStreetView, 'status_changed', function() {
var SVstatus = myStreetView.getStatus()
document.getElementById('info').innerHTML = "Street View Status="+SVstatus;
var heading = google.maps.geometry.spherical.computeHeading(myStreetView.getLocation().latLng, results[0].geometry.location);
myStreetView.setPov({
heading: heading,
pitch: 0
});
setTimeout(function() {
marker = new google.maps.Marker({
position: results[0].geometry.location,
map: myStreetView,
title: address
});
if (marker && marker.setMap) marker.setMap(myStreetView);
}, 500);
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
google.maps.event.addDomListener(document.getElementById('geoBtn'), 'click', geocodeAddress);
}
google.maps.event.addDomListener(window, 'load', geocodeAddress);

html,
body,
#map_canvas {
height: 100%;
width: 100%;
}

<script src="http://maps.google.com/maps/api/js?libraries=geometry"></script>
<input id="address" type="text" value="5175 Buena Vista Boulevard, Castle Rock, CO 80109, USA" />
<input id="geoBtn" type="button" value="Go" />
<div id="info"></div>
<div id="map_canvas"></div>
&#13;
答案 1 :(得分:4)
我也注意到,谷歌似乎正在使用不同的算法在其网站上显示该图像(在左侧面板中),并且它更准确,因为它位于该位置的前端。
没有直接的方法可以使用“街景图像API”获得该角度,但您可以使用javascript API计算该角度并将其传递给Image API。
这里的问题是我们怎么知道建筑物的前面是哪一个?前面通常是入口离街道的位置。因此,您可以使用DirectionService来获取 最近的交通起始位置,通常是建筑物入口处的道路,使用此位置,您现在可以使用其几何实用程序方法轻松计算标题,并将其传递给您的Image API。