国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Baidu map development documentation / 全景圖展現(xiàn)

全景圖展現(xiàn)

概述

百度全景地圖提供沿著全景覆蓋城市指定道路、指定位置點360度的全景視圖,相比二維地圖全景圖更加真實、直觀。

全景地圖API目前覆蓋的城市與百度地圖(map.baidu.com)完全相同,且保持跟百度地圖完全一致的更新頻次。

百度LBS開放平臺通過JavaScript API對外提供全景功能,且默認(rèn)PC端采用flash技術(shù)渲染,手機瀏覽器端采用JavaScript渲染,保證服務(wù)在各瀏覽器下的可用性。另外,由于flash本次渲染存在跨域等問題,因此PC端使用全景功能時需要將全景示例部署到服務(wù)器上查看,直接在本地雙擊示例無法顯示全景圖。

以下是全景圖效果:

jsimg1.jpg

全景控件

通過全景控件可以從普通地圖進入全景地圖,添加全景控件的方式同添加工具條等控件類似

代碼如下:

var stCtrl = new BMap.PanoramaControl();  
stCtrl.setOffset(new BMap.Size(20, 20));  
map.addControl(stCtrl);

點擊全景控件會進入全景圖,點擊全景圖右上角的關(guān)閉按鈕會退回到普通地圖。


全景地圖用法

全景地圖可以與普通地圖一樣作為div添加到網(wǎng)頁里。以下給出展示全景圖的核心代碼并給出代碼說明。

<div id="panorama" style="width:100%;height:100%"></div>    //1  
<script type="text/javascript">  
window.onload = function(){  
    var panorama = new BMap.Panorama('panorama');   //2
    panorama.setPosition(new BMap.Point(120.320032, 31.589666));    //3  
    // panorama.setId('0100010000130501122416015Z1');  
    panorama.setPov({heading: -40, pitch: 6});  //4 
}  
</script>

說明:

1) 創(chuàng)建一個div,該div作為容器“包含”全景地圖;

2) 創(chuàng)建全景對象(Panorama),構(gòu)造函數(shù)參數(shù)與1)中創(chuàng)建的div id相同;

3) 通過經(jīng)緯度坐標(biāo)設(shè)置顯示特定位置的全景地圖;除了指定經(jīng)緯度外,還可以通過指定全景的id設(shè)置當(dāng)前顯示的全景視圖,如代碼注釋部分;

4) heading和pitch兩個參數(shù)用于設(shè)置全景的視角,其中heading指攝像頭水平方向(“搖頭”)的角度,正北方向為0,正東為90,正南為180,正西為270;pitch指攝像頭的垂直方向(“點頭”)。

設(shè)置全景地圖控件

通過設(shè)置Panorama類的PanoramaOption參數(shù)和setOptions方法可以指定是否展示全景地圖里的導(dǎo)航控件、道路指引控件及相冊控件等。

設(shè)置隱藏導(dǎo)航控件的核心代碼如下:

//通過PanoramaOption指定
var panorama = new BMap.Panorama('panorama', {navigationControl: false}); //默認(rèn)為顯示導(dǎo)航控件,默認(rèn)值為true
//通過setOptions方法指定
Panorama.setOptions({navigationControl:false});


設(shè)置道路指引控件的核心代碼如下:

//通過PanoramaOption指定
var panorama = new BMap.Panorama('panorama', {linksControl:false}); //默認(rèn)為顯示道路指引控件,默認(rèn)值為true
//通過setOptions方法指定
Panorama.setOptions({linksControl:false});


如上方法還可以設(shè)置全景相冊控件是否展示及展示樣式,核心代碼如下:

panorama.setOptions({
    albumsControl: true,
    albumsControlOptions:{anchor:BMAP_ANCHOR_TOP_LEFT,  //設(shè)置相冊顯示位置
        offset:new BMap.Size(10,10),//設(shè)置相冊距離左上角偏移量
        maxWidth:100%,//設(shè)置相冊控件的最大顯示寬度
        imageHeight:80//設(shè)置相冊控件的高度
        }
    });


設(shè)置全景內(nèi)顯示的poi類型

Panorama的setPanoramaPOIType方法可以指定顯示的poi類型,目前支持的類型包括:酒店、餐飲、電影院、公交站點、室內(nèi)景等。設(shè)置類型為BMAP_PANORAMA_POI_NONE時,表示隱藏掉所有的poi。

指定全景視野內(nèi)僅顯示餐館類型核心代碼:

panorama.setPanoramaPOIType(BMAP_PANORAMA_POI_CATERING); //餐飲 
panorama.setPov({pitch: 6, heading: 138});


室內(nèi)景地圖用法

百度地圖API除了支持沿道路的全景外,還支持景區(qū)、酒店內(nèi)的室內(nèi)景。 室內(nèi)景與普通全景的差別在于:

1)  普通全景支持根據(jù)經(jīng)緯度和id兩種方式設(shè)置全景圖,而室內(nèi)景只能通過id設(shè)置;

2)  普通全景PanoramaOption類不支持室內(nèi)景切換控件,室內(nèi)景則支持。

給室內(nèi)景設(shè)置內(nèi)景切換控件的核心代碼:

var panorama = new BMap.Panorama('panorama', { 
    'disableIndoorSceneSwitchControl': true //默認(rèn)為顯示室內(nèi)景場景點切換控件,默認(rèn)值為false 
    }); 
panorama.setOptions({ 
    'disableIndoorSceneSwitchControl': true 
    });


獲取全景地圖數(shù)據(jù)

除了展示特定位置、特定視角的全景圖外,JavaScript API也支持獲取該類信息,以下給出獲取全景Id和經(jīng)緯度坐標(biāo)的例子。

var panorama = new BMap.Panorama('panorama', { 
    'disableIndoorSceneSwitchControl': true //默認(rèn)為顯示室內(nèi)景場景點切換控件,默認(rèn)值為false 
    }); 
panorama.setOptions({ 
    'disableIndoorSceneSwitchControl': true 
    });


1) PanoramaService類用于創(chuàng)建檢索全景數(shù)據(jù)信息類的實例,提供了getPanoramaById(根據(jù)pid獲取全景數(shù)據(jù)) getPanoramaByPOIId(根據(jù)POIId獲取全景數(shù)據(jù)) getPanoramaByLocation(根據(jù)坐標(biāo)返回距離此處最近的全景數(shù)據(jù))三個方法用于獲取全景數(shù)據(jù)。

2) getPanoramaByLocation方法可根據(jù)坐標(biāo)返回距離此處最近的全景數(shù)據(jù),當(dāng)獲取不到數(shù)據(jù)時,回調(diào)函數(shù)參數(shù)為null。

全景地圖事件

JavaScript API提供position_changed(位置改變事件)links_changed(相鄰道路全景變化事件)、pov_changed(視角改變事件)、zoom_changed(zoom級別改變事件)等事件,用來監(jiān)測全景狀態(tài)的變化。

用法如下:

var panorama = new BMap.Panorama('panorama');  
panorama.setPosition(new BMap.Point(120.320032, 31.589666));  
panorama.addEventListener('position_changed', function(e){ //注冊全景位置改變事件  
    var pos = this.getPosition();  
    console.log(e.type);  
 
});


在全景地圖里添加標(biāo)注

PanoramaLabel是全景標(biāo)注類,可設(shè)置全景標(biāo)注的位置(position)和三維高度(altitude)屬性,其中三維高度具有“近大遠小”的特點,即全景標(biāo)注點離全景中心點越近,同一個高度值會顯示得更高,如下圖同時設(shè)置標(biāo)注1和標(biāo)注2的高度為2米,但是由于標(biāo)注1距中心點較標(biāo)注2近,故標(biāo)注1顯示的要高些。

panorama.png

通過Panorama類的addOverlay方法可將PanoramaLabel標(biāo)注添加到全景圖中。用法如下:

var panorama = new BMap.Panorama('panorama');
panorama.setPosition(new BMap.Point(116.403925,39.913903));//坐標(biāo)點在天安門
 
var labelPosition = new BMap.Point(116.403925,39.913903);
var labelOptions = {
    position: labelPosition,
    altitude:5
};//設(shè)置標(biāo)注點的經(jīng)緯度位置和高度
var label = new BMap.PanoramaLabel('自定義標(biāo)注-天安門廣場', labelOptions);//創(chuàng)建全景標(biāo)注對象
panorama.addOverlay(label);//在全景地圖里添加該標(biāo)注
panorama.setPov(label.getPov()); //修改點的視角,朝向該label

除了添加全景標(biāo)注外,還可以觸發(fā)全景標(biāo)注的單擊(click)、鼠標(biāo)移入(mouseover)、鼠標(biāo)移出(mouseout)、刪除(remove)事件。以下是單擊事件的使用方法:

label.addEventListener('click', function() { //給標(biāo)注點注冊點擊事件
    panorama.setPov({  //修改點的視角
        pitch: 15, 
        heading: 180
    });
});