javascript - street - map data 2018 google terms of use
¿Cómo comprobar si Google Street View está disponible y mostrar mensaje? (3)
Estoy pasando las variables lat y lng y muestro google sreet view en un div. El problema es que cuando StreetView no está disponible, no se muestra nada. Me gustaría verificar si hay una vista de calle para un tiempo y un tiempo de lectura determinados y mostrar un mensaje. Aquí está mi código:
var myPano = new GStreetviewPanorama(document.getElementById("street2"), panoOpts);
var location = new GLatLng(lat,lng)
myPano.setLocationAndPOV(location);
Tal vez debería usar algo como: Event.addListener(myPano, "error", errorMessage());
¿Algunas ideas?
Actualización para Google Maps JavaScript API v3.25 +: En v3.25 (versión de lanzamiento actual) y v3.26 (versión experimental actual), getPanoramaByLocation()
todavía está disponible pero ya no está documentado .
La respuesta aceptada de @ arthur-clemens aún funciona, pero use getPanorama()
con StreetViewLocationRequest
en su lugar si desea una mejor compatibilidad:
var gstService = new google.maps.StreetViewService();
gstService.getPanorama({
location: new google.maps.LatLng(40.7140, -74.0062),
source: google.maps.StreetViewSource.OUTDOOR
}, function (data, status) {
if (status === google.maps.StreetViewStatus.OK) {
// OK
} else {
// error or no results
}
});
Omita la source
en StreetViewLocationRequest
si no desea que la búsqueda panorámica se limite a las de exteriores.
En v3 esto ha cambiado un poco. Consulte la documentación en http://code.google.com/apis/maps/documentation/javascript/reference.html#StreetViewService
El código actualizado es:
var streetViewService = new google.maps.StreetViewService();
var STREETVIEW_MAX_DISTANCE = 100;
var latLng = new google.maps.LatLng(40.7140, -74.0062);
streetViewService.getPanoramaByLocation(latLng, STREETVIEW_MAX_DISTANCE, function (streetViewPanoramaData, status) {
if (status === google.maps.StreetViewStatus.OK) {
// ok
} else {
// no street view available in this range, or some error occurred
}
});
Es posible que desee revisar la siguiente referencia:
Determinar si una carretera es compatible con Street View mediante la inspección visual de
GStreetviewOverlay
no es a menudo factible, o deseable desde la perspectiva de un usuario. Por esa razón, la API proporciona un servicio que solicita y recupera datos de Street View mediante programación. Este servicio se facilita mediante el uso del objetoGStreetviewClient
.
Básicamente, puedes usar el método getNearestPanoramaLatLng()
de la clase GStreetviewClient
, que te devolverá un GLatLng
del punto más cercano donde está disponible la vista de la calle. Luego puede usar el método distanceFrom()
para verificar si el punto de vista de la calle más cercano se encuentra dentro de un cierto umbral desde su punto de origen.
Aquí hay un ejemplo completo, que creo que debería explicarse por sí mismo:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps API - Street View Availability</title>
<script src="http://maps.google.com/maps?file=api&v=2&sensor=false"
type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
var testPoint = new GLatLng(40.7140, -74.0062); // Broadway, New York
var svClient = new GStreetviewClient();
svClient.getNearestPanoramaLatLng(testPoint, function (nearest) {
if ((nearest !== null) && (testPoint.distanceFrom(nearest) <= 100)) {
alert(''Street View Available''); // Within 100 meters
}
else {
alert(''Street View Noet Available''); // Not within 100 meters
}
});
</script>
</body>
</html>