Это не так просто, как ответ Тротта, потому что POV будет неправильным.Я просто потратил несколько часов на это, и вот мой ответ для тех, кто в конечном итоге на этот вопрос (так как это один из вопросов, которые я нашел, но ответ был бесполезен).
Просмотр улицПо умолчанию POV - это направление, в котором смотрелся грузовик при съемке изображения (см. Рисунок).Вам нужно узнать местоположение грузовика и местоположение дома и рассчитать «курс» от первого местоположения до второго, , а затем установить местоположение для просмотра улиц на то же, что и для грузовика с только что рассчитанным курсом.:
// adrloc=target address
// svwloc=street-view truck location
svwService.getPanoramaByLocation(adrloc,svwdst,function(dta,sts) {
if(sts==google.maps.StreetViewStatus.OK) {
var svwloc=dta.location.latLng;
var svwhdg=google.maps.geometry.spherical.computeHeading(svwloc,adrloc);
var svwmap=avwMap.getStreetView();
svwmap.setPosition(svwloc);
svwmap.setPov({ heading: svwhdg, pitch: 0 });
svwMarker=new google.maps.Marker({ map:svwmap, position: adrloc });
svwmap.setVisible(true);
}
else {
...
}
Еще один трюк / ловушка с использованием просмотра улиц заключается в том, что вам нужно получить ближайший вид улицы к вашему адресу, многократно вызывая getPanoramaByLocation
с увеличивающимся расстоянием, пока вы не добьетесь успеха илидостичь некоторого максимального расстояния.Я решаю это с помощью этого кода:
var SVW_MAX=100; // maximum street-view distance in meters
var SVW_INC=10; // increment street-view distance in meters
var svwService=new google.maps.StreetViewService(); // street view service
var svwMarker=null; // street view marker
// NOTE: avwMap is the aerial view map, code not shown
...
resolveStreetView(avwMap.getCenter(),SVW_INC);
...
var resolveStreetView=function(adrloc,svwdst) {
svwService.getPanoramaByLocation(adrloc,svwdst,function(dta,sts) {
if(sts==google.maps.StreetViewStatus.OK) {
var svwloc=dta.location.latLng;
var svwhdg=google.maps.geometry.spherical.computeHeading(svwloc,adrloc);
var svwmap=avwMap.getStreetView();
svwmap.setPosition(svwloc);
svwmap.setPov({ heading: svwhdg, pitch: 0 });
svwMarker=new google.maps.Marker({ map:svwmap, position: adrloc });
svwmap.setVisible(true);
}
else if(svwdst<SVW_MAX) {
resolveStreetView(adrloc,svwdst+SVW_INC);
}
});
}