openlayers3自帶的鷹眼縮略圖控件功能很侷限,想到本身動手去作,結果很容易就作出來了,這裏主要用到的是兩個map互相聯動。我粗糙的作了兩種縮略圖,介紹以下:html
1、縮略圖可點擊,點擊後更改地圖.net
1.建立map和overview的htmlhtm
- <div id='map' src="" style="width: 100%;height: 680px;position: relative;">
- <div style="position: absolute;bottom:0px;right: 0px;z-index: 200;width: 296px;height:296px;background-color: #fff;border: 1px solid #555;border-radius: 3px;" >
- <div id="overview" style="background-color: #fff;width: 290px;height:290px;margin: 3px 3px 3px 3px;border:1px solid #7b98bc"></div>
- </div>
- </div>
2.建立兩個地圖blog
- var map = new ol.Map({
- target: 'map',
- layers:[layer],
- view: new ol.View({
- projection:'EPSG:4326',
- center:[121.01371765136719,29.139690399169922],
- zoom:14,
- maxZoom:18})
- });
-
- var overview = new ol.Map({
- target: 'overview',
- layers:[layer],
- view: new ol.View({
- projection: 'EPSG:4326',
- center:[121.01371765136719,29.139690399169922],
- zoom:11,
- maxZoom:11,
- minZoom:11})
- });
3.在縮略圖中添加map的extent框get
- var extent = map.getView().calculateExtent(map.getSize());
- var coor=[[[extent[0],extent[1]],[extent[2],extent[1]],[extent[2],extent[3]],[extent[0],extent[3]],[extent[0],extent[1]]]];
- var polygonFeature = new ol.Feature(new ol.geom.Polygon(coor));
-
- var vectorSource = new ol.source.Vector({
- features: [polygonFeature]
- });
-
- var vectorLayer = new ol.layer.Vector({
- source:vectorSource,
- style: new ol.style.Style({
- fill: new ol.style.Fill({color: 'rgba(160,160,160,0.2)'}),
- stroke: new ol.style.Stroke({
- color: 'white', width: 2
- })
- })
- });
- overview.addLayer(vectorLayer);
4.設置map和overview互相聯動animation
- map.on('moveend',function(){
- var extent = map.getView().calculateExtent(map.getSize());
- var coor=[[[extent[0],extent[1]],[extent[2],extent[1]],[extent[2],extent[3]],[extent[0],extent[3]],[extent[0],extent[1]]]];
- vectorLayer.getSource().getFeatures()[0].getGeometry().setCoordinates(coor);
- setTimeout(function(){
- var view = overview.getView();
- var pan = ol.animation.pan({
- duration: 250,
- source: (view.getCenter())
- });
- overview.beforeRender(pan);
- overview.getView().setCenter(map.getView().getCenter());
- },300);
- })
-
- overview.on('pointermove', function (evt) {
- overview.getTargetElement().style.cursor = 'pointer';
- });
-
- overview.on('click',function(e){
- var coor = e.coordinate;
- map.getView().setCenter(coor);
- })
效果以下:it
![](http://static.javashuo.com/static/loading.gif)
更詳細,可參考:http://blog.csdn.net/u014529917/article/details/62216130io