5
yerine arka sokaklar yerine

Belirli bir konum (enlem/boylam) için arka sokak panorama verileri yerine Google StreetView panorama verilerini ana yoldan talep etmenin bir yolu var mı?Ana yoldan/kaldırımdan yararlanma Sokak Görünümü panoramaları API

Kullanıcılarımız tarafından sağlanan ev adresinden bir sokak görünümü panorama almak için Google Haritalar Javascript API'sini kullanıyorum. Ben denedim çoğu adresleri için oldukça iyi çalışır, ama ben Kaliforniya'da bir sürü özellik de arka sokaklar için sokak manzarası var ve API dikişler sürekli ana yol yerine (arka sokak panorama yerine geri dönüyor) fark özellik) panorama.

Kullanıcılara evlerinin arka sokak panoramalarını değil, ana yol panoramalarını göstermek istiyorum. Maps.google.com adresinde aynı adresi ararsam evin önünü görüyorum, ancak API aracılığıyla aynı adresi istediğimde arka sokaktayım.

Şu anda kullanarak süreçtir:

  1. Geocode adresi
  2. hesaplayın başlığı ve ekran panorama sayfasından (enlem/boylam) panorama verilen coğrafi kod Konum alma

Test Adresleri:

  1. 325 S Peck Dr, Beverly Hills, CA, ABD, 90212
  2. 333 S Rodeo Dr, Beverly Hills, CA, ABD, 90212

Herhangi bir fikir veya öneriler büyük takdir. Teşekkürler!

+2

Böyle demek: [325 S Peck Dr, Beverly Hills, CA, ABD, 90212] (http://www.geocodezip.com/v3_StreetView_lookAtB.html?snaptoroad=325%20S%20Peck%20Dr, % 20Büyük ölçüde% 20Hills,% 20CA,% 20USA,% 2090212) ve bu: [333 S Rodeo Dr, Beverly Hills, CA, ABD, 90212] (http://www.geocodezip.com/v3_StreetView_lookAtB.html?snaptoroad=333 % 20S% 20Rodeo% 20Dr,% 20Bu% 20Hills,% 20CA,% 20USA,% 2090212) – geocodezip

+0

Ah Vay! Tam da böyle. Parlak!! – dbrown428

+0

@geocodezip Yerler otomatik tamamlama API'sini kullanıyorum, bu yüzden kullanıcı istedikleri otomatik tamamlama seçeneklerini seçtiğinde bir yerim var. Başka bir API'yi aramak zorunda kalmadan sadece Place nesnesinde yapabileceğim bir şey var mı?Şu anda çatı koordları 'autocomplete.getPlace(). Geometry.location' alıyorum. –

cevap

5

İstenen adresten kendisine yön tarifi almak için yol tarifini kullanın. Sokak görünümü konumu için coğrafi konum yerine bu konumu kullanın. Yerin "at" olarak görünmesi için coğrafi kod sonucunu (umarım bir ROOFTOP doğruluk sonucunu) kullanın.

related question: Facing the targeted building with Google StreetView Örnekler:

kod parçacığını:

var sv = new google.maps.StreetViewService(); 
 
var geocoder = new google.maps.Geocoder(); 
 
var directionsService = new google.maps.DirectionsService(); 
 
var panorama; 
 
var address = "333 S Rodeo Dr, Beverly Hills, CA, USA, 90212"; 
 
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

Sadece yönlendirme servisini kullanmak için kodumu değiştiriyorum. Kod snippet'ini de eklediğiniz için teşekkür ederiz. Şaşırtıcı! Kısa bir süre sonra size döneceğim. :) – dbrown428

+0

Öneriniz mükemmel çalıştı. Teşekkür ederim!!! Kod snippet'inde "geocoderCallback" işlevini ve "var berkeley" öğesinin kullanılmadığını fark ettim ve büyük olasılıkla açıklık için kaldırılabilir. Önerinizi yayınlamak için zaman ayırdığınızdan ve örnek kod çalıştırdığınız için teşekkür ederim. :) – dbrown428

+0

@geocodezip Yerler otomatik tamamlama API'sini kullanıyorum, bu yüzden kullanıcı istedikleri otomatik tamamlama seçeneklerini seçtiğinde bir yerim var. Başka bir API'yi aramak zorunda kalmadan sadece Place nesnesinde yapabileceğim bir şey var mı? Şu anda çatı koordları 'autocomplete.getPlace(). Geometry.location' alıyorum. –