谷歌地图Api街景全景选项Lon Lat的观点设置

时间:2013-05-08 14:25:44

标签: google-maps-api-3 options google-street-view

我有一个由我的Lat Lng坐标识别的StreetViewPanorama。 我的Lat和Lng坐标并不完全在谷歌汽车拍摄照片的道路上,但它们位于我希望在StreetView图片中看到的建筑物的中心。 所以我有两个坐标,我认为可以计算POV度以获得建筑物的正确镜头。 我需要的是如何获得自动放置“男人”的点的Lon Lat,以便我可以计算出正确的POV度。

2 个答案:

答案 0 :(得分:3)

问题解决了:

// d is the position of the house or fisical element where I want to point the view
var d = {lat: 43.538524840485, lng: 10.322718769311};
var whereToLookLatLng = new google.maps.LatLng(parseFloat(d.lat), parseFloat(d.lng));
var panorama = new google.maps.StreetViewPanorama(
    document.getElementById('pano'),
    panoramaOptions
);
map.setStreetView(panorama);

var service = new google.maps.StreetViewService;
// With this function I get the panorama, if available, next the house or fisical element where I want to point the view 
service.getPanoramaByLocation(panorama.getPosition(), 50, 
    function(panoData) {
        if (panoData != null) {
            // MamLatLng is the position of the point of view
            var ManLatLng = panoData.location.latLng;
            // Now I calculate the heading to point the view in the direction of whereToLookLatLng
            var heading = google.maps.geometry.spherical.computeHeading(ManLatLng, whereToLookLatLng);
            var pov = panorama.getPov();
            pov.heading = heading;
            panorama.setPov(pov);
        }
    });
}

答案 1 :(得分:3)

我实施了kiks73的解决方案。

确保在加载maps api时添加几何库:

https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=visualization,places,geometry&sensor=true

var dist = 50;

service.getPanoramaByLocation(targetLatLng, dist, function(panoData){
    panoramaLatLng = panoData.location.latLng;
    initStreetView(targetLatLng, panoramaLatLng)    
});

function initStreetView(targetLatLng, panoramaLatLng){

    var panoramaOptions = {
        position: targetLatLng
    };

    var streetView = new google.maps.StreetViewPanorama(document.getElementById('streetView'),panoramaOptions);
    var heading = google.maps.geometry.spherical.computeHeading(panoramaLatLng, targetLatLng);
    map.setStreetView(streetView);      
    streetView.setPov({heading:heading, pitch:0});                  

}