openlayers-热地图加载(完整版及代码)

//地圖加載
function mapInit(data){
//底图
// var raster = new ol.layer.Tile({
// source: new ol.source.Stamen({
// layer: ‘toner‘
// })
// });
var projection = new ol.proj.Projection({
code: ‘EPSG:4326‘,// ||mapdata.code,
extent: [data.map.minX, data.map.minY, data.map.maxX, data.map.maxY],
});
var view = new ol.View({
center: [data.map.cx, data.map.cy],
projection: projection,
zoom: data.map.zoom,
maxZoom:data.map.maxZoom,
minZoom:data.map.minZoom,
zoomFactor:1.2
});
var opts = {
doubleClickZoom:false,
DragRotateAndZoom:false
};
var map = new ol.Map({
target: ‘map‘,
view:view,
interactions: ol.interaction.defaults(opts)
});
//热力图数据 GeoJSON默认参考坐标系为 EPSG:4326.,根据实际需要进行更改
var heatData = [
{
type: "FeatureCollection",
features: [
{ type: "Point", "coordinates": [117.363228, 32.939667], count: 80 },
{ type: "Point", "coordinates": [117.359623, 32.941612], count: 60 },
{ type: "Point", "coordinates": [117.365631, 32.94651], count: 90 },
{ type: "Point", "coordinates": [117.36443, 32.928789], count: 80 },
{ type: "Point", "coordinates": [117.351212, 32.95328], count: 60 },
{ type: "Point", "coordinates": [117.363228, 32.936281], count: 90 },
{ type: "Point", "coordinates": [117.385029, 32.948383], count: 60 },
{ type: "Point", "coordinates": [117.370781, 32.920144], count: 80 },
{ type: "Point", "coordinates": [117.393097, 32.936137], count: 80 },
{ type: "Point", "coordinates": [117.373528, 32.919856], count: 80 },
{ type: "Point", "coordinates": [117.353443, 32.916541], count: 80 },
{ type: "Point", "coordinates": [117.397217, 32.913803], count: 80 },
{ type: "Point", "coordinates": [117.35207, 32.904148], count: 80 }
]
}];
//矢量图层 获取geojson数据
var vectorSource = new ol.source.Vector({
features: (new ol.format.GeoJSON()).readFeatures(heatData[0], {
dataProjection: ‘EPSG:4326‘,
featureProjection: ‘EPSG:4326‘
})
});
// Heatmap热力图
var vector = new ol.layer.Heatmap({
source: vectorSource,
opacity: [0, 0.8],//透明度
shadow: 250,//阴影像素大小,默认250
//矢量图层的渲染模式:
//‘image‘:矢量图层呈现为图像。性能出色,但点符号和文本始终随视图一起旋转,像素在缩放动画期间缩放。
//‘vector‘:矢量图层呈现为矢量。即使在动画期间也能获得最准确的渲染,但性能会降低。
renderMode: ‘vector‘
});
windowMapChe = map;
map.addLayer(vector);

if(data.map.mapType == 3){//底图格式为DXF
var layer = new ol.layer.Vector({
source: new ol.source.Vector({
projection: view.getProjection(),
url: getBaseURL()+"module/uploads/"+data.map.mapUrl,
format: new ol.format.GeoJSON()
})
});
}else{
var layer = new ol.layer.Image({
source: new ol.source.ImageStatic({
url: getBaseURL()+"module/uploads/"+data.map.mapUrl,
projection: view.getProjection(),
imageExtent: [data.map.minX,data.map.minY,data.map.maxX,data.map.maxY]
})
});
}
layer.setZIndex(0);
map.addLayer(layer);
$(‘.ol-attribution‘).hide()

//聚焦地圖指定位置
loc =[data.map.cx,data.map.cy];
// 聚焦地图指定位置 按指定缩放比例
focusTo(loc,-1);
// 添加地图左侧工具
initTools()
}
/**
* 聚焦地图指定位置 按指定缩放比例
*/
function focusTo(location,zoomTo){
var zoom = zoomTo||(windowMapChe.get("suitzoom")*1);
var duration = 500;
var pan = ol.animation.pan({
duration: duration,
source: /** @type {ol.Coordinate} */ (windowMapChe.getView().getCenter()),
});
var zooma = ol.animation.zoom({
duration: duration,
resolution: 1 * windowMapChe.getView().getResolution()
});
if(-1==zoom){
zoom =windowMapChe.get("suitzoom")*1;
windowMapChe.beforeRender(pan);
}else{
windowMapChe.beforeRender(zooma,pan);
}
windowMapChe.getView().setCenter(location);
windowMapChe.getView().setZoom(zoom);
//初始化設置中心位置
var params = {
zoom:zoom,
center:windowMapChe.getView().setCenter(location)
};
windowMapChe.setProperties({"suitzoom":params.zoom||1});
windowMapChe.setProperties({"recenter":params.center||location});
}
function initTools(){
// 添加自定义业务操作工具栏
var btns =[
// 工具条显示隐藏控制钮
{id:"toolbar-tool",tagName:‘li‘,className:‘arrow_down ctl‘, title:"工具栏",trigger:‘click‘,callback:toolToggle },
// 地图放大按钮
{id:"toolbar-zoomin",className:‘zoomin tool‘,title:‘放大‘,trigger:‘click‘,callback:toolMapZoomIn},
// 地图缩小按钮
{id:"toolbar-zoomout",className:‘zoomout tool‘,title:‘缩小‘,trigger:‘click‘,callback:toolMapZoomOut},
// 地图还原位置和缩放比例
{id:"toobar-refresh",className:‘refresh tool‘,title:‘还原‘,trigger:‘click‘,callback:toolRefresh}
];
for(var i in btns){
addBusinessTool({btns:btns[i]});// btns:btns
}

$(".maptool>button").each(function(){
if(!$(this).hasClass("zoomin")
&&!$(this).hasClass("zoomout")
&&!$(this).hasClass("layout")
&&!$(this).hasClass("refresh")){
$(this).on(‘click‘,function(){
if($(this).hasClass("active")){
$(this).removeClass("active");
}else{
$(this).addClass("active");
}
});
}
});
$(".maptool.tool").each(function(e){
$(this).hide();
});
$(".ol-zoom, .ol-zoomslider").remove();
// 添加地图元素事件
// addMapElementEvent(); 鼠标移动及点击事件

}
//工具条显示隐藏按钮
function toolToggle(){
if($(this).hasClass("arrow_up")){
$(this).removeClass("arrow_up");
$(this).addClass("arrow_down");
$(".ol-control, .maptool, .tool").each(function(e){
if(!$(this).hasClass("arrow_down") && !$(this).hasClass("person") && !$(this).hasClass("area") && !$(this).hasClass("device") && !$(this).hasClass("building")){
$(this).addClass("hide");
}
});
}else{
$(this).removeClass("arrow_down");
$(this).addClass("arrow_up");
$(".ol-control, .maptool, .tool").each(function(e){
$(this).show().removeClass("hide");
});
$(‘.ol-logo-only‘).hide()//地图右侧小图标
}
}
//地图放大按钮事件
function toolMapZoomIn(){
var view = windowMapChe.getView();
var zoom = view.getZoom();
view.setZoom(zoom + 1);
}
// 地图缩小按钮事件
function toolMapZoomOut(){
var view = windowMapChe.getView();
var zoom = view.getZoom();
view.setZoom(zoom - 1);
}
//还原地图位置和缩放比例
function toolRefresh(){
var center = windowMapChe.get("recenter");
var zoom = windowMapChe.get("suitzoom");
var duration = 1500;
var start = +new Date();
var pan = ol.animation.pan({
duration: duration,
source: /** @type {ol.Coordinate} */ (windowMapChe.getView().getCenter()),
start: start
});
var bounce = ol.animation.bounce({
duration: duration,
resolution: 1.1 * windowMapChe.getView().getResolution(),
start: start
});
var zooma = ol.animation.zoom({
duration: duration,
resolution: 1 * windowMapChe.getView().getResolution(),
start: start
});
windowMapChe.beforeRender(bounce,pan,zooma);
windowMapChe.getView().setCenter(center);
windowMapChe.getView().setZoom(zoom);
}
/**
* 添加地图业务工具栏
*/
function addBusinessTool(opt){
businessTool = function(opt_options) {
var options = opt_options || {};
var element = document.createElement(‘div‘);
element.className=‘maptool ol-unselectable ol-control ‘+opt_options.btns.className;
var button =createToolbarBtn(options.btns);
element.appendChild(button);
ol.control.Control.call(this, {
element: element,
target: options.target
});

};
ol.inherits(businessTool, ol.control.Control);
windowMapChe.addControl(new businessTool(opt));
}
function createToolbarBtn(data){
var ele = document.createElement("button");
ele.className=data.className;
ele.id=data.id;
ele.title=data.title;
$(ele).on(data.trigger,data.callback);
return ele;
}

原文地址:https://www.cnblogs.com/benmumu/p/10045923.html

时间: 2024-10-04 00:09:56

openlayers-热地图加载(完整版及代码)的相关文章

页面加载完执行的代码

<script  defer="defer">    alert("页面加载完我才执行的")</script> <script language="javascript" type="text/javascript">     function(){alert("操作成功") var yh='<%Session["user"] %>';}

Web版百度地图加载离线瓦片

注:本文参考网络教程,瓦片也是通过网络下载.向原作者致敬!原作地址:http://download.csdn.net/download/dkm8873/9233731 原作版本已久,由于代码混淆压缩,无法添加标记等特性.本文通过修改最新的 代码达到离线版的目的,而且功能可以任意扩充.本文每一个步骤都经过试验,万无一失. 点此直接下载完整版Demo代码 先准备好一个放置源码的文件夹,然后将获取的文件放进去.建立三个文件夹:js.css.images. 第一步,自然是访问一个入口:http://ap

Openlayers+Geoserver(一):项目介绍以及地图加载

项目验收完,趁着事情不是很多,对这个项目进行梳理.我主要负责地图模块,网站其他模块主要有两个,一个是报表,主要是100多张报表,技术没有难度,主要是工作量的问题.另一个是数据的校验,就是校验数据的冲突. 现在主要介绍地图,地图主要使用openlayers+geoserver,通过Geoserver加载路线以及点状物的shape数据,将各个图层形成一个图层组,页面前端用openlayers加载该图层组,然后对此图层组进行查询.这样做的好处就是,如果有新的图层增加,如果没有特殊的需求,是不需要修改代

免费的Lucene 原理与代码分析完整版下载

Lucene是一个基于Java的高效的全文检索库.那么什么是全文检索,为什么需要全文检索?目前人们生活中出现的数据总的来说分为两类:结构化数据和非结构化数据.很容易理解,结构化数据是有固定格式和结构的或者有限长度的数据,比如数据库,元数据等.非结构化数据则是不定长或者没有固定格式的数据,如图片,邮件,文档等.还有一种较少的分类为半结构化数据,如XML,HTML等,在一定程度上我们可以将其按照结构化数据来处理,也可以抽取纯文本按照非结构化数据来处理.非结构化数据又称为全文数据.,对其搜索主要有两种

C#支付宝扫码支付代码完整版(转)

C#支付宝扫码支付代码完整版 2018年08月24日 15:46:39 bruce135lee 阅读数:2948 本文实例为大家分享了C#支付宝扫码支付示的具体代码,供大家参考,具体内容如下 支付宝工具类 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 5

Linux下搭建Apache服务器(完整版)

Linux下搭建Apache服务器(完整版) 什么是Apache? Apache Licence是著名的非盈利开源组织Apache采用的协议.该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件).需要满足的条件也和BSD类似 Apache主要特点 1.开放源代码.跨平台应用 2.支持多种网页编程语言 3.模块化设计 .运行稳定.良好的安全性 Apache软件版本 1.X  1.目前最高版本是1.3,运行稳定  2.向下兼容性较好,但缺乏一些较新

Android照片墙完整版,完美结合LruCache和DiskLruCache

转载地址:http://blog.csdn.net/guolin_blog/article/details/34093441#comments 在上一篇文章当中,我们学习了DiskLruCache的概念和基本用法,但仅仅是掌握理论知识显然是不够的,那么本篇文章我们就来继续进阶一下,看一看在实战当中应该怎样合理使用DiskLruCache.还不熟悉DiskLruCache用法的朋友可以先去参考我的上一篇文章 Android DiskLruCache完全解析,硬盘缓存的最佳方案 . 其实,在真正的项

u3d5第一人称射击游戏(C#脚本)完整版并在iOS9.3系统上真机运行

参考资料:<Unity3D\2D手机游戏开发>(第二版) +   百度 涉及U3D的功能有:摄像机控制.物理.动画.智能寻路等. 开发工具:Unity3D5.3.4,VS2015,VMplayer12+MacOSX10.11+XCode7.3(我是Windos笔记本用的是苹果虚拟机,MAC真机不需要虚拟机,直接在appstore下载XCode最新版本就可以了,MAC最新版+Xcode最新版本可以直接真机调试运行)+OS9.3系统iphone 说一下U3D,想要在ios上调试的话就要在下载的时候

Asp.NET Core2.0 项目实战入门视频课程_完整版

END OR START? 看到这个标题,你开不开心,激不激动呢? 没错,.net core的入门课程已经完毕了.52ABP.School项目从11月19日,第一章视频的试录制,到今天完整版出炉,离不开各位的帮助和加油. 课程概述 52ABP大学例子程序演示如何使用Entity Framework(EF) Core 2.0 和 Visual Studio 2017 创建一个 ASP.NET Core 2.0 MVC web 应用. 例子是一个大学的网站.它包括了学生入学,创建课程.教师管理等功能