У меня есть простое уличное представление, работающее, чтобы показать мне уличное представление, учитывая адрес:
var geocoder = new google.maps.Geocoder();
var address = "344 Laguna Dr, Milpitas, CA 95035";
geocoder.geocode( { 'address': address},
function(results, status) {
//alert (results);
if (status == google.maps.GeocoderStatus.OK) {
//alert(results[0].geometry.location);
myStreetView = new google.maps.StreetViewPanorama(document.getElementById("map_canvas"));
myStreetView.setPosition(results[0].geometry.location);
var marker = new google.maps.Marker({
position: results[0].geometry.location,
map: myStreetView,
title:address
});
//alert ("yay");
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
Как Вы видите, я добавляю маркер для адреса на уличное представление. Мой вопрос, уличное представление указывает на север, и маркер на юг. Для неопределенного адреса, как я определяю это, уличное представление должно указать на маркер для адреса вместо того, чтобы указать на север по умолчанию?
Посмотрите этот образец . Несмотря на то, что это для V2, вы можете повторно использовать код. По сути, вам нужно вызвать computeAngle (markerLatLng, streetviewPanoLatLng) и установить для панорамы просмотра улиц возвращаемое значение.
function computeAngle(endLatLng, startLatLng) {
var DEGREE_PER_RADIAN = 57.2957795;
var RADIAN_PER_DEGREE = 0.017453;
var dlat = endLatLng.lat() - startLatLng.lat();
var dlng = endLatLng.lng() - startLatLng.lng();
// We multiply dlng with cos(endLat), since the two points are very closeby,
// so we assume their cos values are approximately equal.
var yaw = Math.atan2(dlng * Math.cos(endLatLng.lat() * RADIAN_PER_DEGREE), dlat)
* DEGREE_PER_RADIAN;
return wrapAngle(yaw);
}
function wrapAngle(angle) {
if (angle >= 360) {
angle -= 360;
} else if (angle < 0) {
angle += 360;
}
return angle;
}