一步一步开发电商平台 区域广告实现

技术需求描述:

(1)以北京市为例,以北京市中心点坐标为原点,创建类表格覆盖物,表格代表的宽高均代表一公里。每一块单元格都有自己的编号。

  • 格式 html+js 地图为百度地图
  • 兼容性 ie6+ 以及其他主流浏览器支持
  • 以市中心坐标点为中心区块的中心点
  • 以数学的x,y轴坐标系,作为区块编号命名的依据
  • 每一个区块都是一个正方形,宽高都是一公里
  • 地图及上面的表格覆盖物能放大缩小
  • 遮罩层的每个方块都可以点击,点击后方块变深色,再次点击恢复原色,并可以记录点击的那个区块。
  • 能以字符串或数组,初始化覆盖物表格中的已选中区块
  • 能将地图中心点定位到某一点(百度地图支持),相关的覆盖物对应显示
  • 能根据配置,设置覆盖物的大小(n*m个方块)和每一个区块的大小(之前提到的宽高1公里可设置)

(2)       相应的JavaScript  API

?       ClearAllArea() 作用清空所有以选中的区块

?       ClickArea() 点击区块后执行的函数

?       InitArea(str,bool)初始化区域

参数说明:str 字符串,格式为01_12,23_11 已选中的区块

Bool bool类型,true或false ,true 代表初始化的区块可再次点击编辑,false 代表初始化的区块不可编辑(区块颜色区分正常其他颜色)。

/* 这块本来想外包出去,当时主要忙于支付模块的开发,没人接,最后还是自己搞。

技术实现:

利用百度地图API中的自定义覆盖物实现

单个自定义的覆盖物可以满足一个区块的所有功能,对于那么多区块怎么办,循环产生多个区块让他们一个挨着一个。功能就实现了。

(这块有一个性能问题,因为每一个区块都是一个对象,都要消耗内存和计算资源,这样会使浏览器占用大量内存,还有每次对地图的缩放都会使这些区块全部重绘。所以区块的数量要进行限制。900个区块(30*30)的时候浏览器就很卡了)

// 定义自定义覆盖物的构造函数 

function SquareOverlay(x,y,center,color,eve){

this._latPer=0.008998;

this._lngPer=0.011711;

 this._name=x+"_"+y; 

 this._x=x;//x坐标索引

 this._y=y; //y坐标索引

 this._center = center;   

 this._length = length;   

 this._color = color;   

 this._minLng = center.lng - this._lngPer / 2+ x * this._lngPer;

 this._maxLng = center.lng + this._lngPer / 2+ x * this._lngPer;

 this._minLat = center.lat - this._latPer / 2+ y * this._latPer;

 this._maxLat = center.lat + this._latPer / 2+ y * this._latPer;

}

// 继承API的BMap.Overlay   

SquareOverlay.prototype = new BMap.Overlay();

// 实现初始化方法

SquareOverlay.prototype.initialize = function (map) {

    // 保存map对象实例  

    this._map = map;

    // 创建div元素,作为自定义覆盖物的容器  

    var div = document.createElement("div");

    div.name = this._name;

    div.style.position = "absolute";

    var maxPixel = map.pointToOverlayPixel(new BMap.Point(this._maxLng, this._maxLat));

    var minPixel = map.pointToOverlayPixel(new BMap.Point(this._minLng, this._minLat));

    div.style.width = Math.abs(maxPixel.x - minPixel.x) + "px";

    div.style.height = div.style.width;    //Math.abs(maxPixel.y-minPixel.y) + "px";

    div.style.backgroundColor = this._color; //填充颜色

    div.style.filter = "alpha(opacity=55)"; //透明度兼容ie8

    div.style.opacity = 0.55;  //透明度

    div.style.border = "1px solid #6390ff"; //设置边框和 边框颜色

    div.onclick = AreaClick;

    // 将div添加到覆盖物容器中 

    map.getPanes().floatPane.appendChild(div);

    // 保存div实例  

    this._div = div;

    // 需要将div元素作为方法的返回值,当调用该覆盖物的show、  

    // hide方法,或者对覆盖物进行移除时,API都将操作此元素。  

    return div;

}

// 实现绘制方法  

SquareOverlay.prototype.draw = function(){   

// 根据地理坐标转换为像素坐标,并设置给容器   

 var leftposition= this._map.pointToOverlayPixel(new BMap.Point(this._minLng,this._maxLat));

 var maxPixel=this._map.pointToOverlayPixel(new BMap.Point(this._maxLng,this._maxLat));

 var minPixel=this._map.pointToOverlayPixel(new BMap.Point(this._minLng,this._minLat));

 this._div.style.left = leftposition.x  + "px";   

 this._div.style.top = leftposition.y + "px";   

 this._div.style.width =Math.abs(maxPixel.x-minPixel.x) + "px";

 this._div.style.height =Math.abs(maxPixel.y-minPixel.y) + "px";

}

/* 实现中点击事件的绑定 刚开始 使用 传方法名,然后动态调用。但有问题,单独触发事件时 没问题,放在for循环中 就有问题,最后改为固定的方法名。  

时间: 2024-11-09 21:36:00

一步一步开发电商平台 区域广告实现的相关文章

一步一步开发电商平台(一)目录

开发维护电商平台已经一年多了,一直想写点东西,苦于没有什么时间(加班太多)和制度问题 没能动笔.现在功能模块趋于稳定,大多数的功能实现其他平台也有类似的,所以也就可以写一写 交流一下,如果有什么错误或有更好的解决方案,欢迎指正和探讨.怕我自己比较懒,写文章坚持不下来,先把目录挂上来,督促自己能写全(写完一个会在目录上加上链接).  文章分四大块: 第一部分 基础概念 会用一篇文章去说明 我理解的一些名称概念和对应的逻辑关系. 第二部分 平台架构 会说明一下之前采用的软件架构 和物理架构,以及云服

从电商平台促销活动看电商app开发趋势

据亿合科技小编了解到:尽管各大电商平台都进入了品质和品牌时代,但对于消费者来说,低价依然是一个有吸引力的因素.尼尔森<网络购物者趋势研究>报告显示,2016年价格敏感型购物者的比例从15%上升至19%.网店产品低价对购物的影响大幅提升,从去年的42%跃至今年的61%,可见进行电商app开发也是趋之所向,电商促销活动版块的功能更受用户喜欢,这样创造出更受用户喜爱的app网购平台,从而实现利益的转化.能开发提供更多促销活动的电商app显然更具开发优势,常用的促销开发功能形式有优惠券.满多少减多少.

以太坊开发DApp实战教程——用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台(一)

第一节 简介 欢迎和我们一起来用以太坊开发构建一个去中心化电商DApp!我们将用区块链.星际文件系统(IPFS).Node.js和MongoDB来构建电商平台类似淘宝的在线电商应用,卖家可以自由地出售商品,买家可以自由地购物: 去中心化: 和淘宝或eBay不同,我们把所有的商业逻辑和核心数据都放在以太坊区块链上,这使 得它成为一个完全去中心化的应用.和淘宝这样中心化的电商平台相比,一个去中心化的P2P电商应用显然有其独特的价值--至少你不用担心被平台封账户了. IPFS: 在以太坊上存储用于商品

构建高并发高可用的电商平台架构实践

从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流. 转载请声明出处:http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构.大数据.搜索.开源技术 QQ:306591368 技术Blog:http://blog.csdn.net/yangbutao 一. 设计理念 1.      空间换时间 1)      多级缓存,静态化 客户端页面缓存(http header中包

电商平台项目

某电商平台项目开发要点记录 本文是博主在开发某电商平台项目的一些杂项记录,方便自己和团队同事查阅,偏向于具体技术或应用的细节和个人理解,但也未必非常具体.文中未提的更多内容可能会另起篇章. 导航属性--EF实体关系fluent配置 AutoMapper Autofac Repository模式 Model & DTO 开源&商用.NET电商平台--NopCommerce(3.9版) & Himall(2.4版) 服务器搭建-VMware vSphere Hypervisor(esx

构建高并发高可用的电商平台架构实践 转自网络

从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流. 转载请声明出处: 作者:杨步涛 关注分布式架构.大数据.搜索.开源技术 QQ:306591368 技术Blog:http://blog.csdn.net/yangbutao 一. 设计理念 1.      空间换时间 1)      多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回bo

【转】构建高并发高可用的电商平台架构实践

从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流. 转载请声明出处:http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构.大数据.搜索.开源技术 QQ:306591368 技术Blog:http://blog.csdn.net/yangbutao 一. 设计理念 1.      空间换时间 1)      多级缓存,静态化 客户端页面缓存(http header中包

【转载】构建高并发高可用的电商平台架构实践

从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流. 转载请声明出处:http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构.大数据.搜索.开源技术 QQ:306591368 技术Blog:http://blog.csdn.net/yangbutao 一. 设计理念 1.      空间换时间 1)      多级缓存,静态化 客户端页面缓存(http header中包

ES6+ 开发电商网站的账号体系 JS SDK

详情请咨询  QQ  709639943 01.ES6+ 开发电商网站的账号体系 JS SDK 02.Python3 全网最热的Python3入门+进阶 比自学更快上手实际开发 03.Python3.6 强力Django+杀手级Xadmin打造上线标准的在线教育平台 04.python_进阶强化 05.Java秒杀系统方案优化 高性能高并发实战 06.企业级刚需Nginx入门,全面掌握Nginx配置+快速搭建高可用架构 07.快速上手Linux 玩转典型应用 08.全面系统讲解CSS 工作应用+