Из API мест можно получить координаты места.
Пример: Посольство Бельгии, Париж Возвращение 48.87501200000001, 2.2944579999999632
Теперь используйте эти координаты, чтобы получить просмотр улиц:
![enter image description here](https://i.stack.imgur.com/mSG9e.png)
Очевидно, это не показывает Посольство Бельгии .
Когда служба Panorama возвращает данные, вы можете получить ее реальные координаты, в данном случае 48.87519271414293, 2.294281201461672
, которые, как вы можете видеть, не совсем совпадают с координатами места.
Используя библиотеку геометрии, вы можете вычислить курс между координатами панорамы и координатами вашего места.
let heading = google.maps.geometry.spherical.computeHeading(StreetViewCoords, PlaceCoords);
Это даст вам направление.
Теперь, прежде чем показывать панораму, установите ее заголовок:
streetView.setPov({
heading: heading,
pitch: 0
});
Street View теперь направляется в посольство Бельгии:
![enter image description here](https://i.stack.imgur.com/npfuK.png)
Подтверждение концепции ниже:
var map;
var panorama;
var panoramaService;
var streetView;
var placeCoords;
function initialize() {
placeCoords = new google.maps.LatLng(48.87501200000001, 2.2944579999999632);
map = new google.maps.Map(
document.getElementById("map-canvas"), {
zoom: 5,
center: placeCoords,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
panoramaService = new google.maps.StreetViewService();
var panoramaOptions = {
disableDefaultUI: true
};
panorama = new google.maps.StreetViewPanorama(document.getElementById("pano"), panoramaOptions);
map.setStreetView(panorama);
streetView = map.getStreetView();
runPanoramaService();
}
function runPanoramaService() {
panoramaService.getPanoramaByLocation(placeCoords,
100,
function(streetViewPanoramaData, streetViewStatus) {
if (streetViewStatus == "OK") {
let heading = google.maps.geometry.spherical.computeHeading(streetViewPanoramaData.location.latLng, placeCoords);
streetView.setPosition(streetViewPanoramaData.location.latLng);
streetView.setPov({
heading: heading,
pitch: 0
});
streetView.setVisible(true);
}
});
}
initialize();
#map-canvas {
height: 80px;
}
#pano {
height: 160px;
}
<div id="map-canvas"></div>
<div id="pano"></div>
<!-- Replace the value of the key parameter with your own API key. -->
<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&libraries=geometry&callback=initialize">
</script>