244 lines
6.5 KiB
JavaScript
244 lines
6.5 KiB
JavaScript
var center = [10599381.969998538, 4091531.57875448];
|
|
var WESTDC_MAP_SERVER = "http://210.77.79.190:8888/geoserver";
|
|
|
|
// $(document).ready(function(){
|
|
// $('#map').height($(window).height() - $('.pageTitle').height() - $('.header').height());
|
|
// });
|
|
|
|
var view = new ol.View({
|
|
projection: 'EPSG:3857',
|
|
center: center,
|
|
loadTilesWhileAnimating: true,
|
|
zoom: 7
|
|
});
|
|
|
|
var map = new ol.Map({
|
|
target: 'map',
|
|
layers: [
|
|
// new ol.layer.Tile({
|
|
// title: "天地图卫星影像",
|
|
// source: new ol.source.XYZ({
|
|
// url: 'http://t3.tianditu.com/DataServer?T=img_w&x={x}&y={y}&l={z}'
|
|
// }),
|
|
// visible: true
|
|
// }),
|
|
new ol.layer.Tile({
|
|
title: "天地图底图",
|
|
source: new ol.source.XYZ({
|
|
url: 'http://t0.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}'
|
|
}),
|
|
visible: true
|
|
}),
|
|
new ol.layer.Tile({
|
|
title: "天地图标注",
|
|
source: new ol.source.XYZ({
|
|
url: 'http://t3.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}'
|
|
}),
|
|
visible: true
|
|
})
|
|
],
|
|
controls: [],
|
|
view: view
|
|
});
|
|
|
|
//http://t3.tianditu.com/DataServer?T=img_w&x={x}&y={y}&l={z}
|
|
|
|
map.on('click', function(event) {
|
|
console.log(event.coordinate)
|
|
});
|
|
|
|
function WMSLayer(layer){
|
|
return new ol.layer.Tile({
|
|
source: new ol.source.TileWMS({
|
|
url: WESTDC_MAP_SERVER + '/sjynp/wms',
|
|
params: {'FORMAT': 'image/png',
|
|
'VERSION': '1.1.1',
|
|
tiled: true,
|
|
STYLES: '',
|
|
LAYERS: 'sjynp:' + layer,
|
|
tilesOrigin: 9951420.669071037 + "," + 3974091.390929395
|
|
}
|
|
}),
|
|
opacity: 0.7,
|
|
visible: true
|
|
})
|
|
}
|
|
|
|
var layers = {
|
|
"boundYellowRiver": {
|
|
title: "黄河园区",
|
|
showTitle: false,
|
|
layer: WMSLayer('yellow_river_park'),
|
|
center: [10879848.96087429, 4117877.9384883614],
|
|
zoom: 8
|
|
},
|
|
"boundLanCangJiang": {
|
|
title: "澜沧江园区",
|
|
showTitle: false,
|
|
layer: WMSLayer('lancang_river_park'),
|
|
center: [10557705.50270024, 3935037.30807186],
|
|
zoom: 8
|
|
},
|
|
"boundChangjiang": {
|
|
title: "长江园区",
|
|
showTitle: false,
|
|
layer: WMSLayer('yangtze_river_park'),
|
|
center: [10451297.903618347, 4131586.2994088964],
|
|
zoom: 7
|
|
},
|
|
|
|
"boundArea": {
|
|
title: "县区边界",
|
|
layer: WMSLayer('county_bound_sanjiangyuan'),
|
|
center: [10669314.496444024, 4028957.542397498],
|
|
zoom: 6
|
|
},
|
|
"boundZhiduo": {
|
|
title: "治多县",
|
|
layer: WMSLayer('county_bound_zhiduo'),
|
|
center: [10755941.536062466, 3865974.688836431],
|
|
zoom: 6
|
|
},
|
|
"boundMaduo": {
|
|
title: "玛多县",
|
|
layer: WMSLayer('county_bound_maduo'),
|
|
center: [10669314.496444024, 4028957.542397498],
|
|
zoom: 6
|
|
},
|
|
"boundZaduo": {
|
|
title: "杂多县",
|
|
layer: WMSLayer('county_bound_zaduo'),
|
|
center: [10669314.496444024, 4028957.542397498],
|
|
zoom: 6
|
|
},
|
|
"boundQumalai": {
|
|
title: "曲麻莱县",
|
|
layer: WMSLayer('county_bound_qumalai'),
|
|
center: [10669314.496444024, 4028957.542397498],
|
|
zoom: 6
|
|
},
|
|
|
|
"sanjiangyuanFunctionArea": {
|
|
title: "三江源功能分区",
|
|
layer: WMSLayer('sanjiangyuan_national_nature_reserve'),
|
|
center: [10669314.496444024, 4028957.542397498],
|
|
zoom: 7
|
|
},
|
|
"hohxiFunctionArea": {
|
|
title: "可可西里功能分区",
|
|
layer: WMSLayer('hohxi_national_nature_reserve'),
|
|
center: [10194893.748449273, 4212372.969082045],
|
|
zoom: 8
|
|
}
|
|
};
|
|
|
|
function flyTo(location, zoom, duration, done) {
|
|
if(!duration) duration = 2000;
|
|
if(!zoom) zoom = 8;
|
|
|
|
var parts = 2;
|
|
var called = false;
|
|
function callback(complete) {
|
|
--parts;
|
|
if (called) {
|
|
return;
|
|
}
|
|
if (parts === 0 || !complete) {
|
|
called = true;
|
|
done(complete);
|
|
}
|
|
}
|
|
view.animate({
|
|
center: location,
|
|
duration: duration
|
|
}, callback);
|
|
view.animate({
|
|
zoom: 7,
|
|
duration: duration / 2
|
|
}, {
|
|
zoom: zoom,
|
|
duration: duration / 2
|
|
}, callback);
|
|
}
|
|
|
|
function pointTextStyle(text, size, color) {
|
|
return new ol.style.Style({
|
|
text: new ol.style.Text({
|
|
font: 'bold '+size+'px "Open Sans", "Arial Unicode MS", "sans-serif"',
|
|
overflow: false,
|
|
fill: new ol.style.Fill({
|
|
color: color
|
|
}),
|
|
text: text
|
|
})
|
|
})
|
|
}
|
|
|
|
function addTextMarker(text, location){
|
|
return new ol.layer.Vector({
|
|
source: new ol.source.Vector({
|
|
features: [new ol.Feature({
|
|
geometry: new ol.geom.Point(location)
|
|
})]
|
|
}),
|
|
style: pointTextStyle(text, 18, "#246166")
|
|
});
|
|
}
|
|
|
|
var textLayers = {};
|
|
|
|
$('#map-layers').click(function(){
|
|
$('#layers-selector').toggle();
|
|
});
|
|
|
|
$('.layer-toggle-btn').click(function(){
|
|
$('#layers-selector').toggle();
|
|
var layerId = $(this).data('layer');
|
|
var currentLayer = layers[layerId];
|
|
if (this.checked === false) {
|
|
map.removeLayer(currentLayer.layer);
|
|
map.removeLayer(textLayers[currentLayer.title]);
|
|
} else {
|
|
map.addLayer(currentLayer.layer);
|
|
// view.setCenter(layers[layerId].center);
|
|
flyTo(currentLayer.center, currentLayer.zoom, 2000, function(){
|
|
if(currentLayer.showTitle)
|
|
{
|
|
textLayers[currentLayer.title] = addTextMarker(currentLayer.title, currentLayer.center);
|
|
map.addLayer(textLayers[currentLayer.title]);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
$('#zoom-in').click(function(){
|
|
if(view.getZoom() >=20)
|
|
view.setZoom(20);
|
|
else
|
|
view.setZoom(view.getZoom() + 1);
|
|
});
|
|
|
|
$('#zoom-out').click(function(){
|
|
if(view.getZoom() <=6)
|
|
view.setZoom(6);
|
|
else
|
|
view.setZoom(view.getZoom() - 1);
|
|
});
|
|
|
|
$('#btn-back-to-sjy').click(function(){
|
|
flyTo(center, 7, 2000, function(){
|
|
|
|
});
|
|
});
|
|
|
|
$('#btn-close-layers').click(function(){
|
|
for(var i in layers){
|
|
map.removeLayer(layers[i].layer);
|
|
if(textLayers[layers[i].title])
|
|
map.removeLayer(textLayers[layers[i].title]);
|
|
}
|
|
$('.layer-toggle-btn').attr('checked', false);
|
|
flyTo(center, 7, 2000, function(){});
|
|
});
|
|
|
|
$('#layers-selector').show(); |