2013-02-10 18 views
14

Bugün daha işletmelerin kapalı alan dairelerle göstermek için sokak görünümünü kullanın olup olmadığını bilmek nasıl.sokak görünümü panorama içeride ister dışarıda

seçilen iş göre sokak görünümü göstermek için Programım malzemeleri yeteneği. Ama içeride göstermek istemiyorum. Sadece Açık Havada. Çünkü içler hareket etmemi engelliyor, sadece 360 ​​derece dönüyorlar. Ben içeride veya dışarıda göstermek için gidiyorum eğer

kimse sokak görünümü API bazı değer alınamayacak biliyor mu?

function load_map_and_street_view_from_address(address) { 

var geocoder = new google.maps.Geocoder(); 
geocoder.geocode({ 
    'address': address 
}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     var gps = results[0].geometry.location; 
     create_map_and_streetview(gps.lat(), gps.lng(), 'map_canvas', 'pano'); 
    } 
}); 
} 


function create_map_and_streetview(lat, lng, map_id, street_view_id) { 
var googlePos = new google.maps.LatLng(lat,lng); 

addLatLng = new google.maps.LatLng(lat,lng); 
var service = new google.maps.StreetViewService(); 
service.getPanoramaByLocation(addLatLng, 50, showPanoData); 

} 

function showPanoData(panoData, status) { 
if (status != google.maps.StreetViewStatus.OK) { 
    $('#pano').html('No StreetView Picture Available').attr('style', 'text-align:center;font-weight:bold').show(); 
    return; 
} 
$('#pano').show(); 
var angle = computeAngle(addLatLng, panoData.location.latLng); 

var panoOptions = { 
    position: addLatLng, 
    addressControl: false, 
    linksControl: false, 
    panControl: false, 
    zoomControlOptions: { 
     style: google.maps.ZoomControlStyle.SMALL 
    }, 
    pov: { 
     heading: angle, 
     pitch: 10, 
     zoom: 1 
    }, 
    enableCloseButton: true, 
    visible:true 
}; 

panorama.setOptions(panoOptions); 

} 

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

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

ana Fikir Panorama yerini almak ve mesafeyi doğrulamak oldu:

seçilen adrese göre bu şimdiye kadar kod benim parçacıkları açılır sokak görünümüdür

, çok teşekkür ederim 360 derece civarında en yakın yerler.

+1

benzer istekler hatalar/donanım olarak sunulmuştur Görünüşe) bilet izlemek: http://code.google.com/p/gmaps-api-issue/issue/list? can = 2 & q = iç mekan & colspec = ID + Type + Durum + Tanıtılan + Düzeltildi + Özet + Stars + ApiType + Internal & cells = fayans – JSuar

+2

Bunu bir yanıt olarak göndermiyorum herhangi bir günde değişebilir, ancak panorama.links'in her özelliğinin, eğer açık konumdaysa ve eğer kapalı konumdaysa boşsa bir açıklama özelliğine sahip olduğunu (sokak adını içeren) olduğunu öğrendim; (panorama.links.length === 0 || panorama.links [0] .description == ""), iç mekanda doğruysa geri dönmelidir. Bunu kapsamlı bir şekilde test etmediğimi eklemeliyim ki, tutacağından emin değilim. Ve bunun yakında değişeceğine inanıyorum – yoelp

+0

Teşekkürler, yolunuzu test etmeme izin verin –

cevap

9

Bunun için herhangi bir resmi API (belki ileride onlar birini uygulayacak) bulmak gibi olamaz ve ben kapalı fayans boş bilgi ile olacaktır emin olabilirsiniz sanmıyorum.

Bu API kullandığını benim için çalıştığı tespit edilen Ne: çalıştırın bir HTTP bu adrese GET: "http://cbk0.google.com/cbk?output=xml&ll=52.358445,4.88103" = UZUN ll ile, bu bir hedef bulmak için kullanılan bir iç API'sıdır LAT

konum pano_id. Ayrıca, bize neler yapabileceğimiz hakkında bazı bilgiler verir: zum seviyeleri, hangi sokaklardasınız, vb.

İç mekan sokak görünümü resimlerine sahip olan koordinatlar için tüm sonuçların scene="_number" level_id="_id" olduğunu fark ettim. Panoramanın data_properties etiketi. Ve böylece, her bir yer için Bu isteği çalıştırabilirsiniz ve sonuç XML data_properties

bazı örnekler bu değerlere bakın:

indoors: 
http://cbk0.google.com/cbk?output=xml&ll=52.358445,4.88103 
http://maps.google.com/cbk?output=xml&ll=32.051626,34.7613 

outdoors: 
http://cbk0.google.com/cbk?output=xml&ll=52.358766,4.880494 
http://maps.google.com/cbk?output=xml&ll=32.07782,34.785789 

Kaynak: Hacking google street view

Güncelleme

o istek örneğe &it=all eklemem gerekiyor yerel işletmelere doğru pano_id almak gibi görünüyor:

http://cbk0.google.com/cbk?output=xml&hl=x-local&ll=34.058593,-118.240673&it=all 

Burası için bu hak pano_id, bu API İşte

http://cbk0.google.com/cbk?output=tile&panoid=70o9Pukc2KSjO-PfeHussw&zoom=3&x=5&y=1 
+0

Önümüzdeki 2 gün boyunca - başka seçenek yok, 50 puan sizindir, teşekkürler –

+0

Harika iş arkadaşı, :) teşekkür ederim! –

2

kullanarak doğrulayabilirsiniz Google ile açılan bir özellik isteği var:

https://code.google.com/p/gmaps-api-issues/issues/detail?id=4831 "Seçeneği kapalı sokak görünümleri devre dışı bırakmak için"

bazı dikkat

(yardımcı olmak için orada bilet yıldızı çekinmeyin

bu Tamam Ahlak-mi bilge? ... gerçek bir cevap (henüz), ama burada yıldız böylece tarafların paylaşmak kıymetli gözüküyor/

+0

Evet, bu iyi bir bilgi. Can sıkıcı eksik özellik, bilet yıldızlı. Umarım biraz dikkat çeker. – mahalie