この理由は、ストリートビュー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);
}
});
}
を裏向きにする見出しを設定する必要 – Tilman
@manubkk jsfiddleを追加できますか? – Omar
これについての混乱を招く部分は、 'computeHeading()'は-180から180の範囲の数値を返しますが、povオブジェクトの 'heading'プロパティは0と360の間であると予想されます。 180が 'computeHeading()'の結果になってしまったのはこのトリックでしたが、私は一貫性のない結果を得ています。 – Trevor