2013-05-08 2 views
0

У меня есть StreetViewPanorama, идентифицированная моими координатами Lat Lng. Мои координаты Lat и Lng не совсем в дороге, с которой автомобиль Google сделал снимок, но они находятся в центре здания, которое я хочу увидеть на картинке StreetView. Итак, у меня есть две пары координат, и я думаю, что можно рассчитать градусы POV, чтобы получить правильный снимок здания. Мне нужно, чтобы получить Lon Lat точки, в которую автоматически помещается «человек», чтобы я мог рассчитать правильные уровни POV.Google Maps Api StreetView PanoramaOptions Точка зрения от Lon Lat

+1

Расположение "камеры" является LatLng возвращаемый методом панорамного GetPosition: https: // developers.google.com/maps/documentation/javascript/reference#StreetViewPanorama – geocodezip

ответ

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); 
     } 
    }); 
} 
3

Моя реализация решения kiks73 в.

Убедитесь, чтобы добавить библиотеку геометрии при загрузке 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});     

}    
Смежные вопросы