2015-07-13 4 views
1

Когда вы перейдете в службу картографирования Карт Google и выполните поиск адреса, скажите «666 5th avenue, New York, NY 10019», вам будет представлена ​​карта с маркером, показывающим местоположение, а также различные элементы управления и ссылки в верхнем левом углу карты. Среди них есть ссылка «Просмотр улиц». Нажав на нее, вы увидите панораму перед фасадом здания (с 5-го авеню в этом случае).Google Maps StreetView с адреса

Однако, если я использую JavaScript API и хочу показать StreetView, панорама не будет отображаться перед зданием. Я могу геокодировать адрес, но когда я получу панораму, он не будет смотреть в переднюю часть здания (в этом случае это будет сторона здания с ближайшей перекрестки, 52-я улица). Хуже того, если поставленный адрес - это большое место, например торговый центр, вам необходимо увеличить допуск с 50-метрового значения по умолчанию, и вы обычно получаете вид с небольшой боковой улицы.

Возможно ли получить панораму StreetView с адреса, предпочтительно того же самого, что служба веб-картографии Google будет предоставлять, а не широту, долготу и, возможно, заголовок или высоту с помощью API v3?

+0

Возможный дубликат [Облицовочные целевое здание с Google Просмотра улиц] (http://stackoverflow.com/questions/12495948/facing-the- target-building-with-google-streetview) – geocodezip

+0

Возможный дубликат [Запросить главную улицу панорамы StreetView вместо обратных переходов из API] (http://stackoverflow.com/questions/31176327/request-main-road-streetview-panoramas- вместо-back-alleys-from-api) – geocodezip

+0

Возможный дубликат [Почему некоторые изображения уличного вида не под углом?] (Http://stackoverflow.com/questions/16111626/why-are-some-street-view-images-from-the-wrong-angle) – geocodezip

ответ

1

Используя код от this answer to the question: Request main road StreetView panoramas instead of back alleys from API с вашим «примерным» адресом «666 5th avenue, New York, NY 10019», я получаю тот же результат, что и на Google Maps.

фрагмент кода:

var sv = new google.maps.StreetViewService(); 
 
var geocoder = new google.maps.Geocoder(); 
 
var directionsService = new google.maps.DirectionsService(); 
 
var panorama; 
 
var address = "666 5th avenue, New York, NY 10019"; 
 
var myLatLng; 
 

 
function initialize() { 
 

 
    panorama = new google.maps.StreetViewPanorama(document.getElementById("pano")); 
 

 
    geocoder.geocode({ 
 
    'address': address 
 
    }, function(results, status) { 
 
    if (status == google.maps.GeocoderStatus.OK) { 
 
     myLatLng = results[0].geometry.location; 
 

 
     // find a Streetview location on the road 
 
     var request = { 
 
     origin: address, 
 
     destination: address, 
 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
 
     }; 
 
     directionsService.route(request, directionsCallback); 
 
    } else { 
 
     alert("Geocode was not successful for the following reason: " + status); 
 
    } 
 
    }); 
 
} 
 
google.maps.event.addDomListener(window, 'load', initialize); 
 

 
function processSVData(data, status) { 
 
    if (status == google.maps.StreetViewStatus.OK) { 
 

 
    panorama.setPano(data.location.pano); 
 

 
    var heading = google.maps.geometry.spherical.computeHeading(data.location.latLng, myLatLng); 
 
    panorama.setPov({ 
 
     heading: heading, 
 
     pitch: 0, 
 
     zoom: 1 
 
    }); 
 
    panorama.setVisible(true); 
 

 
    } else { 
 
    alert("Street View data not found for this location."); 
 
    } 
 
} 
 

 
function directionsCallback(response, status) { 
 
    if (status == google.maps.DirectionsStatus.OK) { 
 
    var latlng = response.routes[0].legs[0].start_location; 
 
    sv.getPanoramaByLocation(latlng, 50, processSVData); 
 
    } else { 
 
    alert("Directions service not successfull for the following reason:" + status); 
 
    } 
 
}
<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry"></script> 
 
<div id="pano" style="width: 425px; height: 400px;float:left"></div>

+0

Спасибо за отзыв. Я видел решение проездных маршрутов, размещенное в другом месте. К сожалению, я не могу сказать, что это удовлетворительное решение. Вы получаете меньше очков, чем просто применение геокодов: например, «1441 Broadway, New York, NY 10018» или «237 Park Avenue, New York, NY 10017» не будут отображаться на улицах, но отлично работают с геокодами. Обе эти находки находятся на Картах Google. Вопрос должен состоять в следующем: предоставляет ли Google публично доступную услугу для получения панорамной панорамы улиц по адресу, указанному на Картах Google? –

+0

Ответ на этот вопрос - нет. – geocodezip

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