16

今日、ますます多くの企業がストリートビューを使用して屋内からアパートを表示しています。

私のプログラムは、選択したビジネスに応じてストリートビューを表示する機能を提供します。しかし、私は屋内で見せたくありません。屋外のみ。Indoorsは私が動くのを妨げているので、360度回転するだけです。

屋内または屋外で表示する場合、ストリートビューAPIから値を取得する方法を知っている人はいますか?

どうもありがとうございます、

これは、これまでの私のコードスニペットであり、選択したアドレスに従ってストリートビューを開きます。

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

主なアイデアは、パノラマの位置を取得し、360度前後の最も近い場所までの距離を確認することでした。

4

3 に答える 3

11

このための正式な API を見つけることができないようです (将来的に実装される可能性があります)。また、屋内タイルの説明が空になると確信できるとは思いません。

私のために働いていることがわかったのは、この API を使用することです: このアドレスに対して HTTP GET を実行します: " http://cbk0.google.com/cbk?output=xml&ll=52.358445,4.88103 " と ll=LONG,LAT

これは、ターゲットの場所の pano_id を見つけるために使用される内部 API です。また、それを使って何ができるかについての情報も提供してくれます: ズーム レベル、あなたがいる通りなど。

scene="_number" level_id="_id" 屋内のストリート ビュー画像を含む座標のすべての結果が、パノラマのdata_propertiesタグにあることに気付きました。したがって、場所ごとにこのリクエストを実行し、結果 XML の data_properties でこれらの値を探すことができます。

いくつかの例:

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

出典:グーグルストリートビューのハッキング

アップデート

ローカル ビジネスを正しく取得する&it=allには、要求の例に追加する必要がある pano_id のようです。

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

これはこの場所の正しい pano_id です。この API を使用して確認できます

http://cbk0.google.com/cbk?output=tile&panoid=70o9Pukc2KSjO-PfeHussw&zoom=3&x=5&y=1
于 2013-02-22T08:16:23.867 に答える