Как проверить доступность Google Street View и показать сообщение?
Я передаю переменные lat и lng и отображаю Google SreetView в DIV. Проблема в том, что когда StreetView недоступен, тогда ничего не отображается. Я хотел бы проверить, есть ли вид улиц для данного широты и lng и показать сообщение. Вот мой код:
var myPano = new GStreetviewPanorama(document.getElementById("street2"), panoOpts);
var location = new GLatLng(lat,lng)
myPano.setLocationAndPOV(location);
Может быть, я должен использовать что-то вроде: Event.addListener(myPano, "error", errorMessage());
Есть идеи?
3 ответа
В v3 это немного изменилось. Ознакомьтесь с документацией по адресу http://code.google.com/apis/maps/documentation/javascript/reference.html.
Обновленный код:
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
}
});
Вы можете проверить следующую ссылку:
Определение того, поддерживает ли дорога просмотр улиц, путем визуального осмотра
GStreetviewOverlay
не часто выполнимо или желательно с точки зрения пользователя. По этой причине API предоставляет сервис, который программно запрашивает и извлекает данные Street View. Эта услуга облегчается за счет использованияGStreetviewClient
объект.
В основном вы можете использовать getNearestPanoramaLatLng()
метод GStreetviewClient
класс, который вернет вам GLatLng
ближайшей точки, где доступен просмотр улиц. Затем вы можете использовать distanceFrom()
метод, чтобы проверить, находится ли ближайшая точка обзора улицы в пределах определенного порога от вашей исходной точки.
Вот полный пример, который, я считаю, должен быть понятен:
<!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>
Обновление JavaScript API Карт Google v3.25+: в версиях 3.25 (текущая версия) и версии 3.26 (текущая экспериментальная версия), getPanoramaByLocation()
все еще доступен, но больше не документирован.
Принятый ответ @ arthur-clemens все еще работает, но используйте getPanorama()
с StreetViewLocationRequest
вместо этого, если вы хотите лучшей совместимости:
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
}
});
не указывать source
в StreetViewLocationRequest
если вы не хотите, чтобы поиск панорамы ограничивался только наружными.