usar tutorial street google georreferenciaciĆ³n example control como google-maps google-street-view

google maps - tutorial - Obteniendo el POV para Google StreetView API



google street view (6)

El latLng de la dirección requerida y el latLng de la ubicación del panorama (la posición del automóvil de Street View desde donde se toman las imágenes) no son lo mismo. Hasta donde yo sé, la API no establece el encabezado en la dirección correcta de la dirección latlng, tendrá que configurarlo usted mismo.

Así es como lo hice, utilicé el StreetViewService para encontrar la toma panorámica más cercana disponible y luego calculé el encabezado Pov usando el método computeHeading here

Actualmente estoy usando el incrustador Panorama de Google Street View y quiero obtener el POV (más específicamente el encabezado) para una dirección particular.

Google hace esto a través de maps.google.com , donde, dada una dirección, lo llevará a la vista de la calle y se verá en la dirección correcta. Sin embargo, parece que no puedo encontrar / encontrar documentación para encontrar el rumbo del POV a través de la API.

Puedo hacer que la incrustación de Street View funcione bien con un LatLng , pero la cámara por lo general está orientada en la dirección incorrecta. ¿Algunas ideas?

editar : claridad

Quiero configurar el punto de vista, pero no sé qué valor para configurarlo ...


Encontré esta página muy útil, gracias chicos. Aún necesitaba reconstruir la solución completa de esta y algunas fuentes, así que pensé que la incluiría aquí para usted.

<script> var panorama; function loadStreetView() { var _lat = your_lat; var _lng = your_long; var target = new google.maps.LatLng(_lat,_lng); var sv = new google.maps.StreetViewService(); panorama = new google.maps.StreetViewPanorama(document.getElementById(''hero-street-view'')); var pano = sv.getPanoramaByLocation(target, 50, function(result, status) { if (status == google.maps.StreetViewStatus.OK) { var heading = google.maps.geometry.spherical.computeHeading(result.location.latLng, target); panorama.setPosition(result.location.latLng); panorama.setPov({ heading: heading, pitch: 0, zoom: 1 }); panorama.setVisible(true); } else { console.log("Cannot find a street view for this property."); return; } }); } </script> <script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=geometry&callback=loadStreetView"> </script>


Justo lo que dijo manubkk, estoy usando el siguiente código para obtener el rumbo SV correcto

var $this = $(this), _lat = $this.data("lat"), _lng = $this.data("lng"), streetViewMaxDistance = 100; var point = new google.maps.LatLng(_lat,_lng); var streetViewService = new google.maps.StreetViewService(); var panorama = spaces.map.map.getStreetView(); // We get the map''s default panorama and set up some defaults. // Note that we don''t yet set it visible. //panorama = spaces.map.map.getStreetView(); streetViewService.getPanoramaByLocation(point, streetViewMaxDistance, function (streetViewPanoramaData, status) { if(status === google.maps.StreetViewStatus.OK){ var oldPoint = point; point = streetViewPanoramaData.location.latLng; var heading = google.maps.geometry.spherical.computeHeading(point,oldPoint); panorama.setPosition(point); panorama.setPov({ heading: heading, zoom: 1, pitch: 0 }); panorama.setVisible(true); }else{ $this.text("Sorry! Street View is not available."); // no street view available in this range, or some error occurred } });


La razón de esto es que el POV de la vista de la calle es, de forma predeterminada, la dirección que el camión estaba mirando cuando se tomó la imagen (vaya figura). Necesita obtener la ubicación del camión y la ubicación de la casa y calcular un "rumbo" desde el primer lugar hasta el segundo:

// 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 { ... }

Otro truco / trampa al usar street view es que necesita obtener la vista de calle más cercana a su ubicación de dirección llamando repetidamente getPanoramaByLocation con una distancia creciente hasta que tenga éxito o alcance una distancia máxima. Resuelvo esto usando este código:

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