Используя Google Street View с маркером, как я указываю на POV на маркер?

У меня есть простое уличное представление, работающее, чтобы показать мне уличное представление, учитывая адрес:

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);
    }
});

Как Вы видите, я добавляю маркер для адреса на уличное представление. Мой вопрос, уличное представление указывает на север, и маркер на юг. Для неопределенного адреса, как я определяю это, уличное представление должно указать на маркер для адреса вместо того, чтобы указать на север по умолчанию?

7
задан GSerg 14 May 2011 в 16:44
поделиться

1 ответ

Посмотрите этот образец . Несмотря на то, что это для 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;
 }
3
ответ дан 7 December 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: